2016-02-09 6 views
0

Я пытаюсь разобрать json, но он дает мне ошибку java lang.string не может быть преобразован в jsonArray. Вот мой JSON и ошибка:Как разбирать объекты в json?

Value {"MemberList":[{"MemberId":1,"FirmId":1,"MemberTypeId":1, 
"MemberUserName":"[email protected]",  "MemberName":"sth","UpdateDate":"\/Date(1421840040000)\/", 
"LastLoginDate":"\/Date(1454995980000)\/", 
"FirmTypeId":1,"FirmName":"Firm","FirmOfficialName":"Firm", 
"FirmRowGuid":"sth","MemberRowGuid":"sth","AuthToken":"sth", 
"IsRegistered":1}],"MemberPageList":null,"FirmModuleList":null,"Status":true, 
"StatusCode":"OK"} of type java.lang.String cannot be converted to JSONArray 

Когда я удалил заголовок и участники запуска вручную, работает хорошо, но я должен разобрать его с заголовком, как я должен разобрать его. userDetail моя JSON строка:

JSONArray jsonArray = new JSONArray(userDetail); 
        member = new Member(); 
        for (int i = 0; i < jsonArray.length(); i++) { 

        JSONObject jsonObject = jsonArray.getJSONObject(i); 
        member.MemberId = jsonObject.optInt("MemberId"); 
        member.MemberTypeId = jsonObject.optInt("MemberTypeId"); 
        member.FirmTypeId = jsonObject.optInt("FirmTypeId"); 
        member.IsRegistered = jsonObject.optInt("IsRegistered"); 

        member.MemberUserName = jsonObject.optString("MemberUserName"); 
        member.MemberName = jsonObject.optString("MemberName"); 
        member.UpdateDate = jsonObject.optString("UpdateDate"); 
        member.LastLoginDate = jsonObject.optString("LastLoginDate"); 
        member.FirmName = jsonObject.optString("FirmName"); 
        member.FirmOfficialName = jsonObject.optString("FirmOfficialName"); 
        member.FirmRowGuid = jsonObject.optString("FirmRowGuid"); 
        member.MemberRowGuid = jsonObject.optString("MemberRowGuid"); 
        member.AuthToken = jsonObject.optString("AuthToken"); 
       } 

Here is complete code but still not works

+0

является «Ценностью» части «JSON»? – Blackbelt

+0

Нет, это не ошибка, которую студия android дает мне json начинается с заголовка MemberList. – mesopotamia

+0

проанализируйте как '' JSONObject'' и получите ** MemberList ** из объекта JSON как '' JSONArray'' – mmuzahid

ответ

4

Сво объект JSON не массив так изменения,

JSONArray jsonArray = new JSONArray(userDetail); 

в

JSONObject jsonObj= new JSONObject(userDetail); 
JSONArray jsonArray = jsonObj.getJSONArray("MemberList"); 

Чтобы вручную проверить JSON использовать этот http://jsoneditoronline.org/

КОД:

JSONObject jsonObj= new JSONObject(userDetail); 
    JSONArray jsonArray = jsonObj.getJSONArray("MemberList"); 

        for (int i = 0; i < jsonArray.length(); i++) { 
        member = new Member(); 
        JSONObject jsonObject = jsonArray.getJSONObject(i); 
        member.MemberId = jsonObject.optInt("MemberId"); 
        member.MemberTypeId = jsonObject.optInt("MemberTypeId"); 
        member.FirmTypeId = jsonObject.optInt("FirmTypeId"); 
        member.IsRegistered = jsonObject.optInt("IsRegistered"); 

        member.MemberUserName = jsonObject.optString("MemberUserName"); 
        member.MemberName = jsonObject.optString("MemberName"); 
        member.UpdateDate = jsonObject.optString("UpdateDate"); 
        member.LastLoginDate = jsonObject.optString("LastLoginDate"); 
        member.FirmName = jsonObject.optString("FirmName"); 
        member.FirmOfficialName = jsonObject.optString("FirmOfficialName"); 
        member.FirmRowGuid = jsonObject.optString("FirmRowGuid"); 
        member.MemberRowGuid = jsonObject.optString("MemberRowGuid"); 
        member.AuthToken = jsonObject.optString("AuthToken"); 
       } 
+0

Да, ваш json-массив MemberList не userDetail, userDetail - это json-объект, сначала получите ссылку на него и получите json-массив. –

+0

@Madhur Мне понравилось, что вы сказали, что я добавляю ss, можете ли вы сказать, что я делаю неправильно. – mesopotamia

+0

Ответ, который вы получаете userDetail, является jsonobject и в объекте json вы получаете MemberList как jsonarray. – Madhur

0
{ 
"MemberList": [{ 
    "MemberId": 1, 
    "FirmId": 1, 
    "MemberTypeId": 1, 
    "MemberUserName": "[email protected]", 
    "MemberName": "sth", 
    "UpdateDate": "\/Date(1421840040000)\/", 
    "LastLoginDate": "\/Date(1454995980000)\/", 
    "FirmTypeId": 1, 
    "FirmName": "Firm", 
    "FirmOfficialName": "Firm", 
    "FirmRowGuid": "sth", 
    "MemberRowGuid": "sth", 
    "AuthToken": "sth", 
    "IsRegistered": 1 
}], 
"MemberPageList": null, 
"FirmModuleList": null, 
"Status": true, 
"StatusCode": "OK" 

}

как вы можете видеть верхние корневые данные мы получаем в качестве объекта, в пределах этого объекта мы получаем массив «Пользователей», так что вам нужно сначала получите объект, затем массив внутри него.

, а также сделать это, чтобы преобразовать ответ в в строку

HttpResponse response=client.execute(post); 
String obj= EntityUtils.toString(response.getEntity()); 

затем использовать его, как вы хотите.

Надеюсь, у вас есть это.

Смежные вопросы