如何在android中解析嵌套的JSON对象

时间:2015-03-31 20:37:54

标签: android json

我想从轰鸣声JSON数据中解析verse_nr和verse。任何人都可以帮助我..

{"book":[{"book_ref":"Ps","book_name":"Psalms","book_nr":"19","chapter_nr":"16","chapter":{"8":{"verse_nr":"8","verse":"I have set the LORD always before me: because he is at my right hand, I shall not be moved."}}}],"direction":"LTR","type":"verse","version":"kjv"}

2 个答案:

答案 0 :(得分:1)

您需要使用JSON Parser库。以下是org.json.解析器的示例。

JSONObject root = new JSONObject(inputJSON);

JSONObject chapter = root.getJSONArray("book")
                         .getJSONObject(0).getJSONObject("chapter");
JSONObject verse = chapter.getJSONObject(JSONObject.getNames(chapter)[0]);

基本上,您只需链接JSON getters ,直到找到verse对象。在那里,您可以使用getString()作为

访问值
System.out.println(verse.getString("verse_nr"));
System.out.println(verse.getString("verse"));

输出:

  

8
  我把耶和华永远摆在我面前,因为他在我右边,我不会动摇。

答案 1 :(得分:0)

您必须使用JSONObjectJSONArray对其进行迭代。

您可以使用以下命令生成类:http://www.jsonschema2pojo.org/只需确保检查'Json'而不是'Json Schema',因为这是原始json。然后你可以使用gson自动将其转换为那些生成的类。这样做的指南: http://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html

如果这是来自服务器,我建议使用精彩的Retrofit库,只需几行代码即可完成上述所有工作;可以在此处找到执行此操作的教程:http://inaka.net/blog/2014/10/10/android-retrofit-rest-client/

无论如何,如果想通过上述解决方案忽略让您的生活更轻松,手动执行此操作您将执行以下操作: String jsonLiteral = /* your json remember to escape the double quotes */ JSONObject root = new JSONObject(jsonLiteral); // Get Strings from a JSONObject as String direction = root.getString("direction"); // You have a single element array, so you need to get that JSONObject singleElement = root.getJSONArray("book").getJSONObject(0); // Then you can Strings from it like direction above String bookRef = singleElement.getString("book_ref");

您还可以使用以下方法获得一个漂亮的输出来检查json结构: http://jsonformatter.curiousconcept.com/