[英]Read JSON-File with Java
我嘗試閱讀以下 JSON 文件:
[
{
"0": {
"owner_ip": 0,
"id": 0,
"text": "test",
"timestamp": ""
}
},
{
"1": {
"owner_ip": 0,
"id": 1,
"text": "test",
"timestamp": ""
}
},
{
"2": {
"owner_ip": 0,
"id": 2,
"text": "test",
"timestamp": ""
}
},
{
"3": {
"owner_ip": 0,
"id": 3,
"text": "test",
"timestamp": ""
}
},
{
"4": {
"owner_ip": 0,
"id": 4,
"text": "test",
"timestamp": ""
}
}
]
我導入了以下包:
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
我想獲取“0”->“text”的值,我執行如下操作:
JSONParser jsonParser = new JSONParser();
try(FileReader reader = new FileReader("filename"){
Object obj = jsonParser.parse(reader);
JSONArray readList = (JSONArray) obj;
System.out.println(readList);
System.out.println(readList.get(0));
System.out.println(readList.get(0).getClass().getName());
// Output = {"0":{"owner_ip":0,"id":0,"text":"test","timestamp":""}}
// Output = org.json.simple.JSONObject
在此之后,我不知道如何進一步編碼。 我嘗試了很多不同的方法,但沒有任何效果。 我希望你能幫助我。
您的 JSON 格式奇怪。 它有一個對象數組,這些對象有一個條目,其鍵與它們在循環中的索引相同。
第一個元素的text
條目的 JSON 路徑將是
json[0]["0"].text
您會看到0
兩次,因為您需要首先 select 是數組的第一個元素,然后是 object 在該數組中的鍵為"0"
。
在您的代碼中,您可以這樣做:
JSONArray array = (JSONArray) jsonParser.parse(reader);
JSONObject obj = (JSONObject) array.get(0);
JSONObject nestedObj = (JSONObject) obj.get("0");
String textValue = (String) nestedObj.get("text");
System.out.println(textValue);
雖然我建議修復 JSON 的格式。 嵌套的 object 似乎完全沒有必要。
最終,您的 JSON 將如下所示:
[
{
"owner_ip": 0,
"id": 0,
"text": "test",
"timestamp": ""
},
{
"owner_ip": 0,
"id": 1,
"text": "test",
"timestamp": ""
},
{
"owner_ip": 0,
"id": 2,
"text": "test",
"timestamp": ""
},
{
"owner_ip": 0,
"id": 3,
"text": "test",
"timestamp": ""
},
{
"owner_ip": 0,
"id": 4,
"text": "test",
"timestamp": ""
}
]
然后你可以跳過代碼中的obj.get("0")
行。
JSONArray array = (JSONArray) jsonParser.parse(reader);
JSONObject obj = (JSONObject) array.get(0);
String textValue = (String) obj.get("text");
System.out.println(textValue);
如果您確定結構保持不變,
JSONArray readList = (JSONArray) obj;
JSONObject targetObj = readList.get(0);
System.out.println(targetObj.get("text")); // will print "test"
或者您可以迭代拋出 JSONArray。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.