gpt4 book ai didi

java - 使用 Gson 反序列化 JSON

转载 作者:行者123 更新时间:2023-12-01 18:45:07 25 4
gpt4 key购买 nike

我收到了服务器响应,其中包含通过以下方式构建的复杂对象:

json array of object type A with
{ jsonobject with a json array of object type B
}

我正在尝试将其反序列化为我的对象 typeA 和对象 typeB,如下例所示:

public class ObjectA{
String a;
int b;
ArrayList<ObjectB> list;
}

public class ObjectB{
String a1;
int b2;
String c3;
}

这是我的 JSON 的示例

[
   {
      "a": "a",
      "b": 1,
      "list": [
         {
            "a1": "a1",
            "b2": 2,
            "c3": "c3"
         },
         {
            "a1": "a1",
            "b2": 2,
            "c3": "c3"
         }
      ]
   },
   {
      "a": "a",
      "b": 1,
      "list": [
         {
            "a1": "a1",
            "b2": 2,
            "c3": "c3"
         },
         {
            "a1": "a1",
            "b2": 2,
            "c3": "c3"
         }
      ]
   }
]

如何反序列化它?

最佳答案

由于您已经有了一个类层次结构,因此您可以利用它并让 Gson 为您完成所有工作。为了更好地解释我的意思,我准备了一个可以运行的代码:

package stackoverflow.questions.q18123430;

import java.lang.reflect.Type;
import java.util.*;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class Q18123430 {

public static class ObjectA {
String a;
int b;
ArrayList<ObjectB> list;

@Override
public String toString() {
return "ObjectA [a=" + a + ", b=" + b + ", list=" + list + "]";
}

}

public static class ObjectB {
String a1;
int b2;
String c3;

@Override
public String toString() {
return "ObjectB [a1=" + a1 + ", b2=" + b2 + ", c3=" + c3 + "]";
}

}

public static void main(String[] args) {
String json = "[{ a:\"a\",b:1,list: [{a1:\"a1\",b2:2,c3:\"c3\"},{a1:\"a1\",b2:2,c3:\"c3\"}]}, { a:\"a\",b:1,list: [{a1:\"a1\",b2:2,c3:\"c3\"},{a1:\"a1\",b2:2,c3:\"c3\"}]}]";
Type listOfObjectA = new TypeToken<List<ObjectA>>() {
}.getType();

Gson g = new Gson();
ArrayList<ObjectA> result = g.fromJson(json, listOfObjectA);
System.out.println(result);

}

}

这是我的执行结果:

[ObjectA [a=a, b=1, list=[ObjectB [a1=a1, b2=2, c3=c3], ObjectB [a1=a1, b2=2, c3=c3]]], ObjectA [a=a, b=1, list=[ObjectB [a1=a1, b2=2, c3=c3], ObjectB [a1=a1, b2=2, c3=c3]]]]

关于java - 使用 Gson 反序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18123430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com