2013-03-29 55 views
0

我只是从JSON格式的服务器解析数据。我被困住了。我不知道如何继续下去。有人可以帮我写Json吗?

JSONObject object1 = new JSONObject(str); 
String s1 = object1.getString("results"); 
JSONArray array1 = object1.getJSONArray("constituencies"); 

上述代码是否正确?

回答

0

看一看下面的JSON解析代码,

public class ParseJSON extends Activity { 

/** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    String readTwitterFeed = readTwitterFeed(); 
    try { 
     JSONArray jsonArray = new JSONArray(readTwitterFeed); 
     Log.i(ParseJSON.class.getName(), 
      "Number of entries " + jsonArray.length()); 
     for (int i = 0; i < jsonArray.length(); i++) { 
     JSONObject jsonObject = jsonArray.getJSONObject(i); 
     Log.i(ParseJSON.class.getName(), jsonObject.getString("text")); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 

    public String readTwitterFeed() { 
    StringBuilder builder = new StringBuilder(); 
    HttpClient client = new DefaultHttpClient(); 
    HttpGet httpGet = new HttpGet("http://twitter.com/statuses/user_timeline/vogella.json"); 
    try { 
     HttpResponse response = client.execute(httpGet); 
     StatusLine statusLine = response.getStatusLine(); 
     int statusCode = statusLine.getStatusCode(); 
     if (statusCode == 200) { 
     HttpEntity entity = response.getEntity(); 
     InputStream content = entity.getContent(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(content)); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      builder.append(line); 
     } 
     } else { 
     Log.e(ParseJSON.class.toString(), "Failed to download file"); 
     } 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return builder.toString(); 
    } 
} 

写作JSON是非常简单的。只需创建JSONObject或JSONArray并使用toString()方法即可。

public void writeJSON() { 
    JSONObject object = new JSONObject(); 
    try { 
    object.put("name", "Jack Hack"); 
    object.put("score", new Integer(200)); 
    object.put("current", new Double(152.32)); 
    object.put("nickname", "Hacker"); 
    } catch (JSONException e) { 
    e.printStackTrace(); 
    } 
    System.out.println(object); 
} 

Original Source

0

以上代码正确与否?

所以看来源:

{ 
    "results":{ 
     "constituencies":[ 

     ], 
     "members":[ 
     { 
      "constituency_name":"Beckenham", 
      "member_name":"Bob Stewart", 
      "member_party":"Conservative", 
      "member_biography_url":"http://www.parliament.uk/biographies/commons/Bob-Stewart/3919", 
      "member_website":"http://www.bobstewartmp.com/", 
      "uri":"http://findyourmp.parliament.uk/constituencies/beckenham.json" 
     }, 
     { 
      "constituency_name":"Colchester", 
      "member_name":"Sir Bob Russell", 
      "member_party":"Liberal Democrat", 
      "member_biography_url":"http://www.parliament.uk/biographies/commons/Sir-Bob-Russell/35", 
      "member_website":"http://www.bobrussell.org.uk", 
      "uri":"http://findyourmp.parliament.uk/constituencies/colchester.json" 
     }, 
     ] 
    } 
} 

在这里,你有两个JSONObject

  • 第一(整个源代码)
  • 结果

结果包含了(在此代码片段)两个JSONArrays

  • 选区(即空数组)
  • 成员(它有两个孩子的)

所以,你需要首先获取整个JSON然后结果,然后您可以访问阵列。

JSONObject root = new JSONObject(str); // whole source 
JSONObject results = root.getJSONObject("results"); 

JSONArray constituenciesArr = results.getJSONArray("constituencies"); 
JSONArray membersArr = results.getJSONArray("members"); 
JSONObject child = null; 
for (int i = 0; i < membersArr.length(); i++) { 
    child = membersArr.getJSONObject(i); 
    String mName = child.getString("member_name"); 
    ... 

} 
+0

我继续你的建议后,编写代码。它表明'局部变量constituenciesArr的值不used'和'局部变量membersArr的值不used'。检查此http://pastebin.com/cMzZHzBW和议会类http://pastebin.com/j2BVjDFk – User1001

+0

@ User1001这不是问题...只警告你不使用constituenciesArr变量。你可以确定删除这一行。这只是为了想象。 – Sajmon

+0

好的!一旦我完成,我会让你知道。 – User1001

相关问题