我从服务响应中收到以下JSON
格式数据。我无法解析JSON
数据。任何人都可以在我犯错的地方帮助我。
{
"data": {
"companyInfo": {
"name": "san",
"registration_number": "222",
"registration_date": null,
"address_id": "15",
"bank_id": "34",
"logo": null,
"utr_number": null,
"insurance_number": null,
"paypal_id": null,
"active": "yes",
"created_date": "2015-08-03 16:39:34",
"company_id": "12",
"vat_number": null,
"vat_percent": null,
"vat_ref_number": null,
"vat_status": null,
"vat_date": "0000-00-00 00:00:00",
"account_number": null,
"sort_code": null,
"swift_code": null,
"iban": null,
"iban_flag": null,
"bank_flag": null,
"bank_name": "san"
},
"userInfo": {
"id": "11",
"full_name": "san",
"email": "san@san.com",
"address_id": "15",
"company_id": "12",
"business_category_id": "1",
"user_type": "0",
"active": "yes",
"created_date": "2015-08-03 16:39:34",
"postal_address": null,
"street1": "san",
"street2": null,
"state": "nepal",
"zip": null,
"phone1": "8765",
"phone2": null,
"website": null,
"country": "United States"
}
},
"status": true,
"message": "Logged in successfully"
}
以下是解析JSON
对象的java代码。
@Override
protected String doInBackground(String... arg0) {
String login = "false";
// Creating service handler class instance
ServiceHandler sh = new ServiceHandler();
// Making a request to url and getting response
url = getResources().getString(R.string.Login_Url);
//url = getString(R.string.Login_Url);
String jsonStr = sh.makeServiceCall(url, ServiceHandler.POST, params);
Log.d("Response: ", "> " + jsonStr);
try {
JSONObject jsonObj = new JSONObject(jsonStr);
JSONObject structure = (JSONObject) jsonObj.get("companyInfo");
String a = structure.get("name").toString();
} catch (JSONException e) {
e.printStackTrace();
}
return login;
}
我正在收到错误消息
org.json.JSONException: No value for companyInfo.
因为我的回复中有一个名为companyInfo
的JSON onject。我无法找出我所犯的错误在哪里。
答案 0 :(得分:2)
有点偏离主题,但我建议使用jackson来处理json输入/输出:你可以直接从json输入实例化对象或获取对象的json值。
ie:Json String to Object
// get the json
String jsonStr = sh.makeServiceCall(url, ServiceHandler.POST, params);
// get the object from the json
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(jsonStr, User.class);
// get user.data.companyInfo.name
String name = null;
if(user != null && user.getData() != null && user.getData().getCompanyInfo() != null)
name = user.getData().getCompanyInfo().getName();
答案 1 :(得分:1)
还有一个JSONObject
名为data
,companyInfo
位于其中。你忘记先解析它。所以解析data
,然后解析companyInfo
。
@Override
protected String doInBackground(String... arg0) {
// Creating service handler class instance
ServiceHandler sh = new ServiceHandler();
// Making a request to url and getting response
url = getResources().getString(R.string.Login_Url);
//url = getString(R.string.Login_Url);
String jsonStr = sh.makeServiceCall(url, ServiceHandler.POST, params);
Log.d("Response: ", "> " + jsonStr);
try {
JSONObject jsonObj = new JSONObject(jsonStr);
JSONObject data=(JSONObject)jsonObj.get("data");
JSONObject structure = (JSONObject) data.get("companyInfo");
String a = structure.get("name").toString();
} catch (JSONException e) {
e.printStackTrace();
}
return login;
}