【问题标题】:Parse Json file in java在java中解析Json文件
【发布时间】:2016-04-05 21:32:35
【问题描述】:

对于这个json文件

{
    "Name": "crunchify.com",
    "Author": "App Shah",
    "Company List": [
        "Compnay: eBay",
        "Compnay: Paypal",
        "Compnay: Google"
    ]
}

我使用了那些代码

Object obj = parser.parse(new FileReader(
                        "G:/Contextual Search/balll.json"));

                JSONObject jsonObject = (JSONObject) obj;
                    String name = (String) jsonObject.get("Name");
                String author = (String) jsonObject.get("Author");
                JSONArray companyList = (JSONArray) jsonObject.get("Company List");

                System.out.println("Name: " + name);
                System.out.println("Author: " + author);
                System.out.println("\nCompany List:");
                Iterator<String> iterator = companyList.iterator();
                while (iterator.hasNext()) {
                    System.out.println(iterator.next());
                }

如何解析并获取此关键 JSON 文件的值?哪里有嵌套成嵌套数据。在身体标签下有人,在人下有偏好,在偏好下有很多价值。它对我来说太复杂了,无法获得价值。我怎样才能得到这些值请任何建议?

{"body": 
{"group": "Family",
 "season": "Summer",
 "person": 
 {"gender": "Male", 
 "age": 23.0, 
 "id": 12258, 
 "preferences": [
 {"rating": 3, 
 "documentId": "TRECCS-00674898-160", 
 "tags": ["Romantic", "Seafood", "Family Friendly"]},
 {"rating": 2,
 "documentId": "TRECCS-00247656-160",
 "tags": ["Bar-hopping"]},
 {"rating": 3,
 "documentId": "TRECCS-00085961-160",
 "tags": ["Gourmet Food"]},
 {"rating": 4,
 "documentId": "TRECCS-00086637-160",
 "tags": ["Family Friendly", "Local Food", "Entertainment"]},
 {"rating": 4,
 "documentId": "TRECCS-00086308-160",
 "tags": ["Family Friendly", "Tourism"]},
 {"rating": 4, 
 "documentId": "TRECCS-00086622-160",
 "tags": ["Healthy Food",
 "Romantic", "Gourmet Food"]},
 {"rating": 2,
 "documentId": "TRECCS-00809111-160",
 "tags": ["Wellness",
 "Family Friendly",
 "Sport"]},
 {"rating": 4,
 "documentId": "TRECCS-00086310-160",
 "tags": ["Family Friendly", "Sport"]},
 {"rating": 4,
 "documentId": "TRECCS-00340169-160",
 "tags": ["Fashion Bargains",
 "Live Music",
 "Shopping for accessories",
 "Family Friendly"]},
 {"rating": 4,
 "documentId": "TRECCS-00018110-160",
 "tags": ["Healthy Food", "Family Friendly", "Local Food", "Organic Food"]},
 {"rating": 2, "documentId": "TRECCS-00085880-160",
 "tags": ["Romantic", "Sailing", "Seafood"]},
 {"rating": 4, "documentId": "TRECCS-00259825-152", "tags": ["Family Friendly", "Budget Friendly"]}]},
 "trip_type": "Holiday", "duration": "Weekend trip", 
 "location": {"lat": 26.56285, "state": "FL", "id": 210, "lng": -81.94953000000001, "name": "Cape Coral"}},
 "candidates": ["TRECCS-00001063-210", "TRECCS-00001069-210", "TRECCS-00001080-210", "TRECCS-00001085-210",
 "TRECCS-00001086-210", "TRECCS-00001092-210", "TRECCS-00001102-210", "TRECCS-00001114-210", "TRECCS-00001148-210", 
 "TRECCS-00056424-210", "TRECCS-00056508-210", "TRECCS-00056589-210", "TRECCS-00056591-210", "TRECCS-00056687-210", 
 "TRECCS-00056715-210", "TRECCS-00316172-210", "TRECCS-00317050-210", "TRECCS-00552677-210", "TRECCS-00552744-210", 
 "TRECCS-00552876-210", "TRECCS-00553080-210", "TRECCS-00553240-210", "TRECCS-00553540-210", "TRECCS-00852498-210",
 "TRECCS-01452784-210"], "id": 2}

【问题讨论】:

标签: java json


【解决方案1】:

这是与您的 JSON 一起工作的代码

 try {
  String responseString = "{\n"
  + "    \"Name\": \"crunchify.com\",\n"
  + "    \"Author\": \"App Shah\",\n"
  + "    \"Company List\": [\n"
  + "        \"Compnay: eBay\",\n"
  + "        \"Compnay: Paypal\",\n"
  + "        \"Compnay: Google\"\n"
  + "    ]\n"
  + "}";
  JSONParser parser = new JSONParser();
  Object obj = parser.parse(new String(responseString));
  JSONObject Object_index0 = (JSONObject) obj;
  String obj21 = Object_index0.get("Name").toString();
  String obj22 = Object_index0.get("Author").toString();
  Object obj23 = Object_index0.get("Company List");
  System.out.println("Name=>" + obj21 + "\nAuthor=>" + obj22 + "\nCompany List=> " + obj23);
  JSONArray lang = (JSONArray) Object_index0.get("Company List");
   for (int i = 0; i < lang.size(); i++) {
      System.out.println("Company Name=>" + lang.get(i));
    }
    } catch (ParseException e) {
        e.printStackTrace();
    }

并添加 org.json.simple jar 。如需更多说明,请询问 很高兴能帮助你 。谢谢

【讨论】:

    【解决方案2】:

    如您在问题中所示,一个选项始终是遍历 JSON 字段。另一个更好的选择是将 JSON 反序列化为对象。许多 JSON 库都支持此功能。例如,使用Google's Gson,您的代码看起来像...

    class Group {
        String group;
        String season;
        MyPerson person;
    }
    
    class Person {
        String gender;
        double age;
        int id;
        MyPreference[] preferences;
    }
    
    class Preference {
        int rating;
        String documentId;
        String[] tags;
    }
    

    然后反序列化 JSON ...

    String json = "Your JSON ...";
    Group group = new Gson().fromJson(json, Group.class);
    

    【讨论】:

    • 有很多文件我该如何使用它们以及我需要解决这个问题的文件
    • 如果文件都具有与上述相同的结构,那么您可以简单地将所有文件读入字符串并使用具有相同Group 类的fromJson 方法。如果文件具有不同的 JSON 结构,它会变得有点复杂。您可能需要为每种类型的 JSON 结构声明类。
    猜你喜欢
    • 2015-03-09
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多