[英]Parse every element of JSON to Array in Java
JAVA
我想將JSON文件的每個元素(最好使用gson)解析為Array。 我搜尋了兩天,但仍然找不到正確的方法。 我的JSON文件如下所示:
{
"spawn1": {
"x": 336.4962312645427,
"y": 81.0,
"z": -259.029426052796
},
"spawn2": {
"x": 341.11558917719424,
"y": 80.0,
"z": -246.07415114625
}
}
將會有越來越多的具有不同名稱的元素。 我需要的是像x,y,z這樣的所有元素並使用它創建一個對象並將其放置到數組中。 該對象的類如下所示:
public class Chest {
private double x, y, z;
public Chest(double x, double y, double z) {
this.x = x;
this.y = y;
this.z = z;
}
}
對於您當前正在使用的課程,它將無法正常工作。
您的JSON字符串當前需要2個類似以下的類:
public class ClassOne
{
ClassTwo spawn1;
ClassTwo spawn2;
}
public class ClassTwo
{
double x;
double y;
double z;
}
因此,您需要更改JSON或類結構。
編輯
如果要使用當前正在使用的類,則需要以下形式的JSON字符串:
[
{
"x": 1.0,
"y": 2.0,
"z": 3.0
},
{
"x": 4.0,
"y": 5.0,
"z": 6.0
}
]
如果要維護您的spawn1
和spawn2
字段,請在您的類中添加一個String
字段,並使用如下所示的JSON String(此處的字段名稱為name
):
[
{
"name": "spawn1",
"x": 1.0,
"y": 2.0,
"z": 3.0
},
{
"name": "spawn2",
"x": 4.0,
"y": 5.0,
"z": 6.0
}
]
從JSON轉換它們時,它們都返回Chest[]
。
使用JSON有點棘手,因為您說過對象的數量可以更改,但是這些不在數組中。 但是您可以使用JsonObject.entrySet
使用GSON迭代每個元素
首先,解析JSON並獲取對象:
JsonObject json = JsonParser.parse(jsonToParse).getAsJsonObject();
然后,您迭代元素:
List<Chest> list = new ArrayList<>();
for(Entry<String, JsonElement> e : json.entrySet()){
//read the json you can find in `e.getValue()`
JsonObject o = e.getValue().getAsJsonObject();
double x = o.getAsJsonPrimitive("x").getAsDouble();
...
//create the instance `Chest` with those `double` and insert into a `List<Chest>`
list.add(new Chest(x,y,z));
}
如果要檢索名稱,則在輸入鍵中: e.getKey()
。
請注意,可以使用Stream
進行改進,但要使其與家人保持友好;)我將保留該循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.