在 java.lang.String 类型的用户无法转换为 JSONObject json 响应 android



来自服务器的响应是:

{"message":"Login successfull","error":false,"user":"{"DISTRICT":[{"Id":1,"Name":"Abbottabad"},{"Id":3,"Name":"Bannu"},{"Id":4,"Name":"DI Khan"},{"Id":5,"Name":"Kohat"},{"Id":6,"Name":"Mardan"},{"Id":7,"Name":"Peshawar"},{"Id":8,"Name":"Swat"},{"Id":9,"Name":"Battagram"},{"Id":10,"Name":"Buner"},{"Id":11,"Name":"Chitral"},{"Id":12,"Name":"Charsadda"},{"Id":13,"Name":"Dera Ismail Khan"},{"Id":14,"Name":"Hangu"},{"Id":15,"Name":"Haripur"},{"Id":16,"Name":"Karak"},{"Id":17,"Name":"Kolai Pallas Kohistan"},{"Id":18,"Name":"Upper Kohistan"},{"Id":19,"Name":"Lower Kohistan"},{"Id":20,"Name":"Lakki Marwat"},{"Id":21,"Name":"Lower Dir"},{"Id":22,"Name":"Malakand"},{"Id":23,"Name":"Mansehra"},{"Id":24,"Name":"Nowshera"},{"Id":25,"Name":"Shangla"},{"Id":26,"Name":"Swabi"},{"Id":27,"Name":"Tank"},{"Id":28,"Name":"Upper Dir"},{"Id":29,"Name":"Torghar"}],"BUSINESS_TYPE":[{"Id":1,"Name":"Hotels"},{"Id":2,"Name":"Restaurants"},{"Id":3,"Name":"Schools\/Colleges"},{"Id":4,"Name":"Dhaba\/Tea Stall\/Shwarma\/Dahi Bhalay"},{"Id":5,"Name":"Tandoor"},{"Id":6,"Name":"Juice Shop"},{"Id":7,"Name":"Kabab Shop"},{"Id":8,"Name":"Mega Marts\/Super Store"},{"Id":9,"Name":"Stores"},{"Id":10,"Name":"Karyana Store"},{"Id":11,"Name":"Fruits\/Dry Fruits\/Vegetables"},{"Id":12,"Name":"Meat Shop"},{"Id":13,"Name":"Poultry\/Fish Shop"},{"Id":14,"Name":"Whole Sale Dealer"},{"Id":15,"Name":"Distribution Point"},{"Id":16,"Name":"Wharehouse"},{"Id":17,"Name":"Bakers and Confectioners"},{"Id":18,"Name":"Small Industry"},{"Id":19,"Name":"Medium Industry"},{"Id":20,"Name":"Large Industry"},{"Id":21,"Name":"Cottage Industry"},{"Id":22,"Name":"Cart"},{"Id":23,"Name":"Cold Storage"},{"Id":24,"Name":"Slaughter House"},{"Id":25,"Name":"Dairy Shop and Form"},{"Id":26,"Name":"Canteen"},{"Id":27,"Name":"Others"},{"Id":28,"Name":"Oil\/Ghee Industry"},{"Id":29,"Name":"Ice Factory"},{"Id":30,"Name":"Salt and Minerals"},{"Id":31,"Name":"Ice Cream Factory"},{"Id":32,"Name":"Water Purification Plant"},{"Id":33,"Name":"Masala"},{"Id":34,"Name":"Papar Factory"},{"Id":35,"Name":"Papar\/Chips\/Pops Factory"}],"ASSISTANT_DIRECTOR":[{"staff_id":1,"staff_name":"Sajjad Ahmad"},{"staff_id":2,"staff_name":"Murad Ali"}],"FSO":[{"staff_id":35,"staff_name":"Shahab"},{"staff_id":36,"staff_name":"Shakeel Ahmad Khan"},{"staff_id":37,"staff_name":"Nawab Ali"},{"staff_id":38,"staff_name":"Shakeel Ahmed"}],"OFFENCE":[{"Id":1,"Name":"Adultration"},{"Id":2,"Name":"Mislabeling\/Misbranding"},{"Id":4,"Name":"Unhygienic Condition"},{"Id":5,"Name":"Banned Items"},{"Id":6,"Name":"Expired Items"}],"SAMPLE_DISCARDED":[{"Id":1,"Name":"Milk"},{"Id":2,"Name":"Meat"},{"Id":3,"Name":"Water"},{"Id":4,"Name":"Beverages"},{"Id":5,"Name":"Diary Products"},{"Id":6,"Name":"Poultry"},{"Id":7,"Name":"Salt"},{"Id":8,"Name":"Spices\/Masala"},{"Id":9,"Name":"Bakary"},{"Id":11,"Name":"Chips\/Pops"},{"Id":12,"Name":"Oil\/Ghee"},{"Id":13,"Name":"Ice"},{"Id":14,"Name":"Non-Food Colors\/Flavours"},{"Id":15,"Name":"Fruit Pulp\/Squash\/Jams\/Pickles"}]}"}

我想做的是:

JSONObject obj = new JSONObject(s);
JSONObject userJson = obj.getJSONObject("user");

给出正确的结果,但异常为:

W/System.err: org.json.JSONException: Value {"DISTRICT":[{"Id":1,"Name":"Abbottabad"},{"Id":3,"Name":"Bannu"},{"Id":4,"Name":"DI Khan"},{"Id":5,"Name":"Kohat"},{"Id":6,"Name":"Mardan"},{"Id":7,"Name":"Peshawar"},{"Id":8,"Name":"Swat"},{"Id":9,"Name":"Battagram"},{"Id":10,"Name":"Buner"},{"Id":11,"Name":"Chitral"},{"Id":12,"Name":"Charsadda"},{"Id":13,"Name":"Dera Ismail Khan"},{"Id":14,"Name":"Hangu"},{"Id":15,"Name":"Haripur"},{"Id":16,"Name":"Karak"},{"Id":17,"Name":"Kolai Pallas Kohistan"},{"Id":18,"Name":"Upper Kohistan"},{"Id":19,"Name":"Lower Kohistan"},{"Id":20,"Name":"Lakki Marwat"},{"Id":21,"Name":"Lower Dir"},{"Id":22,"Name":"Malakand"},{"Id":23,"Name":"Mansehra"},{"Id":24,"Name":"Nowshera"},{"Id":25,"Name":"Shangla"},{"Id":26,"Name":"Swabi"},{"Id":27,"Name":"Tank"},{"Id":28,"Name":"Upper Dir"},{"Id":29,"Name":"Torghar"}],"BUSINESS_TYPE":[{"Id":1,"Name":"Hotels"},{"Id":2,"Name":"Restaurants"},{"Id":3,"Name":"Schools/Colleges"},{"Id":4,"Name":"Dhaba/Tea Stall/Shwarma/Dahi Bhalay"},{"Id":5,"Name":"Tandoor"},{"Id":6,"Name":"Juice Shop"},{"Id":7,"Name":"Kabab Shop"},{"Id":8,"Name":"Mega Marts/Super Store"},{"Id":9,"Name":"Stores"},{"Id":10,"Name":"Karyana Store"},{"Id":11,"Name":"Fruits/Dry Fruits/Vegetables"},{"Id":12,"Name":"Meat Shop"},{"Id":13,"Name":"Poultry/Fish Shop"},{"Id":14,"Name":"Whole Sale Dealer"},{"Id":15,"Name":"Distribution Point"},{"Id":16,"Name":"Wharehouse"},{"Id":17,"Name":"Bakers and Confectioners"},{"Id":18,"Name":"Small Industry"},{"Id":19,"Name":"Medium Industry"},{"Id":20,"Name":"Large Industry"},{"Id":21,"Name":"Cottage Industry"},{"Id":22,"Name":"Cart"},{"Id":23,"Name":"Cold Storage"},{"Id":24,"Name":"Slaughter House"},{"Id":25,"Name":"Dairy Shop and Form"},{"Id":26,"Name":"Canteen"},{"Id":27,"Name":"Others"},{"Id":28,"Name":"Oil/Ghee Industry"},{"Id":29,"Name":"Ice Factory"},{"Id":30,"Name":"Salt and Minerals"},{"Id":31,"Name":"Ice Cream Factory"},{"Id":32,"Name":"Water Purification Plant"},{"Id":33,"Name":"Masala"},{"Id":34,"Name":"Papar Factory"},{"Id":35,"Name":"Papar/Chips/Pops Factory"}],"ASSISTANT_DIRECTOR":[{"staff_id":1,"staff_name":"Sajjad Ahmad"},{"staff_id":2,"staff_name":"Murad Ali"}],"FSO":[{"staff_id":35,"staff_name":"Shahab"},{"staff_id":36,"staff_name":"Shakeel Ahmad Khan"},{"staff_id":37,"staff_name":"Nawab Ali"},{"staff_id":38,"staff_name":"Shakeel Ahmed"}],"OFFENCE":[{"Id":1,"Name":"Adultration"},{"Id":2,"Name":"Mislabeling/Misbranding"},{"Id":4,"Name":"Unhygienic Condition"},{"Id":5,"Name":"Banned Items"},{"Id":6,"Name":"Expired Items"}],"SAMPLE_DISCARDED":[{"Id":1,"Name":"Milk"},{"Id":2,"Name":"Meat"},{"Id":3,"Name":"Water"},{"Id":4,"Name":"Beverages"},{"Id":5,"Name":"Diary Products"},{"Id":6,"Name":"Poultry"},{"Id":7,"Name":"Salt"},{"Id":8,"Name":"Spices/Masala"},{"Id":9,"Name":"Bakary"},{"Id":11,"Name":"Chips/Pops"},{"Id":12,"Name":"Oil/Ghee"},{"Id":13,"Name":"Ice"},{"Id":14,"Name":"Non-Food Colors/Flavours"},{"Id":15,"Name":"Fruit Pulp/Squash/Jams/Pickles"}]} at user of type java.lang.String cannot be converted to JSONObject
at org.json.JSON.typeMismatch(JSON.java:100)

我尝试了很多,但找不到解决方案。

问题是键"user"的值实际上并不是一个 json 对象,它是一个看起来像json 对象的String。这就是你所拥有的,格式化和修剪了一点:

"user":"{"DISTRICT":[...]}"

如果这是一个 json 对象,它将如下所示:

"user":{"DISTRICT":[...]}

大括号周围的双引号,以及大括号内双引号转义的反斜杠,是你实际上在这里使用字符串的线索。

您可以做的是将"user"的值检索为 String,然后将其转换为 json 对象:

JSONObject obj = new JSONObject(s);
String userString = obj.getString("user");
JSONObject userObject = new JSONObject(userString);

最新更新