[英]Parse Json file in java
對於這個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}
一種選擇是始終如您在問題中所顯示的那樣遍歷JSON字段。 另一個更好的選擇是將JSON反序列化為對象。 許多JSON庫都支持此功能。 例如,使用Google的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);
這是與您的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。 如果需要進一步的澄清,請要求我們提供幫助。 謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.