2012-03-08 4 views
0

я получаю от сервера ответ в этой формеТочный синтаксис, чтобы получить вложенное атрибут из ответа Json с gson

{"error":null,"id":1,"result":{"admin":false,"firstname":"Jason","id":346,"idHotel":109,"idVendor":null,"lastname":"Butcher","sessionkey":"3c8a17ae47a6d131b1a14b44a1d8f9a9","urlAvatar":"avatar_316_mjm.jpg","urlThumb":"thumb_316_mjm.jpg"}} 

И хочу, чтобы получить различные одиночные атрибуты, в гнездовой результате JSon в качестве примитивного

, например

Boolean error=..; 
String admin=....; 
String idHotel=...; 

Я попытался сделать класс таким образом

public class HotelLogin { 
    public boolean error; 
    public int id; 
    public Result result; 
    //get and set 


    public static class Result { 
     public String lastname; 

     ... 
     ...//get and set 
    } 
} 

и я использовал этот код обвязки десериализовать JSONObject serverResponse

HotelLogin loggedRs= new HotelLogin(); 
Gson gson = new Gson(); 
response = gson.fromJson(serverResponse, HotelLogin.class); 

Но на данный момент я не знаю, как получить отдельные атрибуты внутреннего JSON.

И если я использую код

Result user=login.getResult(); 
String lastname=user.getLastname(); 

Получить исключения нулевого указателя

ответ

-1

Ну, если предположить, что у вас есть переменная или данные возврата, который содержит ваш ответ сервера, вы можете попробовать это:

var newError = data.Error; 
var newId = data.Id; 
var newFirstName = data.result.firstname; 

ИЛИ

var serverResponse = data; //(considering that this 'data' is your json object); 

//you access it through dot notation. 

serverResponse.error; 
serverResponse.result.admin; 
serverResponse.result.id; 

Каждый получит ваши требуемые данные. Вы можете прокручивать свой json-объект, если хотите, но мне нравится использовать точечную нотацию. Обратите внимание, что вы не всегда можете использовать его, так как вы должны знать, имеет ли атрибут дочерний узел.

+0

Вопрос в том, как это сделать с Java, а не с JavaScript – jsparks