2011-11-21 91 views
0

谁能帮助,我似乎无法修复该错误回报,而试图解析这个API:Android的JSON解析

{ 
    "createDate": 1321834118923, 
    "result": "SUCCESS", 
    "searchTerm": "N7", 
    "searchableLocations": [ 
     { 
      "identifier": "OUTCODE^1685", 
      "name": "N7" 
     } 
    ] 
} 

请帮我找出问题

package com.somcollection; 

    import android.app.Activity; 
    import android.os.Bundle; 

    import org.json.JSONArray; 
    import org.json.JSONObject; 
    import android.app.Activity; 
    import android.os.Bundle; 

    public class JsonParser extends Activity { 
private JSONObject jObject; 


private String jString = "{\"searchTerm\":\"N7\",\"searchableLocations 
    \":[{\"identifier\":\"OUTCODE^1685\",\"name\":\"N7\"}],\"createDate 
    \":1321834118923,\"result\":\"SUCCESS\"}"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    try { 
     parse(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
private void parse() throws Exception { 
    jObject = new JSONObject(jString); 

    JSONObject jObject = new JSONObject(jString);  
    String menuObject = jObject.getString("searchTerm");  
    JSONArray menuitemArray = jObject.getJSONArray("searchableLocations"); 

    for (int i = 0; i < menuitemArray.length(); i++) { 
     JSONObject jsonObj = menuitemArray.getJSONObject(i);  
     String attributeId = jsonObj.getString("identifier");  
     System.out.println(attributeId);  

     String attributeValue = jsonObj.getString("name");  
     System.out.println(attributeValue); 
    } 

    String createDate = jObject.getString("jObject"); 
    String result = jObject.getString("result"); 

} 
} 
+0

我建议你使用谷歌的GSON库:http://code.google.com/p/google-gson/ – binnyb

回答

0

下面一行将失败:

String createDate = jObject.getString("jObject"); 

由于您在名为“jObject”的JSON中没有键值。我希望你会需要编写

String createDate = jObject.getString("createDate"); 

作为一个侧面说明,你可能不希望使用getString()用于要么因为在技术上它在JSON被定义为整数此值。

+0

这就是我作为我的原始API,我不能回答你的问题,因为它上面我的android knowladge(新的android)。 {“searchTerm”:“N7”,“searchableLocations”:[{“identifier”:“OUTCODE^1685”,“name”:“N7”}],“createDate”:1321834118923,“result”:“SUCCESS”}谢谢Devunwired,我会尽快添加我的日志 – Mohamed

+0

11-21 22:31:49.030:E/AndroidRuntime(305): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 11-21 22:31: 49.030:E/AndroidRuntime(305): 在android.app.ActivityThread.access $ 2300(ActivityThread.java:125) 11-21 22:31:49.030:E/AndroidRuntime(305):\t 在android.os .Handler.dispatchMessage(Handler.java:99) 11-21 22:31:49.030:E/AndroidRuntime(305):\t at android.os.Looper.loop(Looper.java:123) – Mohamed

+0

你应该把你的logcat作为代码发布在你自己的帖子里,而不是一个评论,所以它不会被砍掉:)但是,我的声明仍然存在......除非在你发布的代码中存在拼写错误,字符串'String createDate = jObject.getString(“jObject”);''是你破解的地方,因为原始JSON中没有“jObject”键。 – Devunwired