2013-03-29 2 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

Я продолжал писать код после ваших предложений .. Он показывает 'Значение локальных переменных-окруженияArr не используется' и' Значение локальной переменной membersArr не используется'. проверьте этот http://pastebin.com/cMzZHzBW и класс парламента http://pastebin.com/j2BVjDFk – User1001

+0

@ User1001 это не проблема ... только предупреждение о том, что вы не используете переменную окруженияArr. Вы можете точно удалить эту строку. Это было только для воображения. – Sajmon

+0

okayy! Я сообщу тебе, как только закончу. – User1001

 Смежные вопросы

  • Нет связанных вопросов^_^