我正在处理一个我得到JSON
响应的应用程序。回复如下:
[
{
"CID": 5,
"ChildMenus": [],
"Level": null,
"MenuUrl": "",
"Name": "Jewelry",
"PCID": 235,
"REnum": null,
"isLooseDiamond": "NO"
},
{
"CID": 122,
"ChildMenus": [],
"Level": null,
"MenuUrl": "",
"Name": "Collection",
"PCID": 235,
"REnum": null,
"isLooseDiamond": "NO"
},
{
"CID": 459,
"ChildMenus": [],
"Level": null,
"MenuUrl": "http://jewelry.roughdiamondxchange.in/Guide.aspx",
"Name": "Education",
"PCID": 235,
"REnum": null,
"isLooseDiamond": "NO"
},
{
"CID": 483,
"ChildMenus": [],
"Level": null,
"MenuUrl": "",
"Name": "Design Your Own ",
"PCID": 235,
"REnum": null,
"isLooseDiamond": "NO"
},
{
"CID": 486,
"ChildMenus": [],
"Level": null,
"MenuUrl": "http://jewelry.roughdiamondxchange.in/About.aspx",
"Name": "Policy",
"PCID": 235,
"REnum": null,
"isLooseDiamond": "NO"
},
{
"CID": 56,
"ChildMenus": [],
"Level": null,
"MenuUrl": "",
"Name": "Diamonds",
"PCID": 235,
"REnum": null,
"isLooseDiamond": "YES"
},
{
"CID": 611,
"ChildMenus": [],
"Level": null,
"MenuUrl": "",
"Name": "Overview",
"PCID": 235,
"REnum": null,
"isLooseDiamond": "NO"
}
]
为了解析这个我使用下面的代码
try {
// Getting Array of Contacts
/*JSONObject jsonObject = new JSONObject(json);*/
/*JSONArray array = json.getJSONArray("Value");*/
JSONArray array=new JSONArray();
array.put(getJSONFromUrl());
// looping through All Contacts
for(int i = 0; i < array.length(); i++){
JSONObject c = array.getJSONObject(i);
/* JSONObject object = jsonObject.getJSONObject("FirstObject");*/
// Storing each json item in variable
/*String cid = c.getString(TAG_CID);*/
String name = c.getString(TAG_NAME);
String pcid = c.getString(TAG_PCID);
String menuurl = c.getString(TAG_MENUURL);
// Phone number is agin JSON Object
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
/* map.put(TAG_CID, cid);*/
map.put(TAG_NAME, name);
map.put(TAG_PCID, pcid);
map.put(TAG_MENUURL, menuurl);
// adding HashList to ArrayList
menuList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
它给我一个org.json.JSONException: No value for name
错误。我无法解析数据。我很感激有关如何解析日期的任何想法。
答案 0 :(得分:0)
检查字符串TAG_NAME =“名称”而非“名称”
答案 1 :(得分:0)
当您尝试访问不在jsonObject中的 TAG_NAME时,会发生此错误。 通过 has(TAG_NAME)返回布尔值
检查TAG_NAME是否存在String name = c.getString(TAG_NAME);
答案 2 :(得分:0)
我认为您需要检查字符串TAG_NAME
。将代码更改为以下代码后更改。希望它会对你有所帮助。
for(int i = 0; i < array.length(); i++){
JSONObject c = array.getJSONObject(i);
/* JSONObject object = jsonObject.getJSONObject("FirstObject");*/
// Storing each json item in variable
/*String cid = c.getString(TAG_CID);*/
String name = c.getString("Name");
String pcid = c.getString("PCID");
String menuurl = c.getString("MenuUrl");
// Phone number is agin JSON Object
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
/* map.put(TAG_CID, cid);*/
map.put("Name", name);
map.put("PCID", pcid);
map.put("MenuUrl", menuurl);
// adding HashList to ArrayList
menuList.add(map);
}
答案 3 :(得分:0)
试试这个
List<String>mCid = new ArrayList<String>();
List<String>mLevel = new ArrayList<String>();
String value,result;
InputStream is,in;
JSONArray jArray = null;
try {
HttpClient httpclient=new DefaultHttpClient();
HttpPost httppost=new HttpPost("url");
//namevaluepair=new ArrayList<NameValuePair>(1);
//namevaluepair.add(new BasicNameValuePair("key",value));//if you want to send data to server
//httppost.setEntity(new UrlEncodedFormEntity(namevaluepair));
HttpResponse httpresponse=httpclient.execute(httppost);
in=httpresponse.getEntity().getContent();
//inputStream = response.getEntity().getContent();
}catch(Exception e){Log.e("","error in http connection");}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(in,"iso-8859-1"),8);
StringBuilder sb1 = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb1.append(line + "\n");
}
in.close();
result=sb1.toString();
Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show();
try{
JSONObject json=new JSONObject(result);
jArray=json.getJSONArray("Array_name_in_response"); //whatever name of your array in response
System.out.println(jArray.length());
//if(jArray.length()!=0){
for(int i=0;i<jArray.length();i++)
{
value = jArray.getJSONObject(i).optString("CID");
mCid.add(value);
value = jArray.getJSONObject(i).optString("Level");
mLevel.add(value);
System.out.println(value);
}
// }
}catch(JSONException e){
Log.e("log_tag", " Error parsing data "+e.toString());
}
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}