gpt4 book ai didi

Java - 如何反序列化带有嵌套对象和列表的 JSON 数组?

转载 作者:行者123 更新时间:2023-12-02 12:18:52 24 4
gpt4 key购买 nike

如何反序列化包含其他对象中的对象列表的 JSON 字符串?我找到了简单反序列化的解释,但我无法从中推断太多,因为它们都有点偏离。举个例子(省略 POJO),对于

String json = "[ {
"id" : 33147,
"name" : "Refinancing",
"photos" : [ {
"name" : "347.png",
"url" : "/loans/568/photos/092"
} ],
"username" : "zach1985"
} , {
"id" : 7693,
"name" : "Stuff",
"photos" : [ {
"name" : "newpic1.png",
"url" : "/loans/123446/photos/890"
} ],
"username" : "sengaia"
} ]";

ArrayList<Ad> ads = new ArrayList<>;

deserialize(json, ads);

System.out.println(ads.get(1).getName());
System.out.println(ads.get(0).getPhotos().get(0).getName());

输出将是“Stuff”和“347”。那么 deserialize() 方法需要如何实现?

最佳答案

正如我在对该问题的评论中指出的那样,这是显示如何执行此操作的测试:

public class JSONTest {

public static class FullyTypedThing {
public int id;
public String name;
public List<Photos> photos = Lists.newArrayList();
public String username;

public static class Photos {
public String name;
public String url;
}
}

private static final String json = "[ { \"id\" : 33147, \"name\" : \"Refinancing\", \"photos\" : [ {"
+ "\"name\" : \"347.png\", \"url\" : \"/loans/568/photos/092\" } ],"
+ "\"username\" : \"zach1985\"} , { \"id\" : 7693, \"name\" : \"Stuff\","
+ "\"photos\" : [ { \"name\" : \"newpic1.png\", \"url\" : \"/loans/123446/photos/890\" } ],"
+ "\"username\" : \"sengaia\" } ]";

@Test
public void roundtrip() throws IOException {
ObjectMapper mapper = new ObjectMapper();
List<FullyTypedThing> res = Lists.newArrayList(
mapper.readValue(json, FullyTypedThing[].class));
assertEquals(2, res.size());
assertEquals(33147, res.get(0).id);
assertEquals("Refinancing", res.get(0).name);
assertEquals("347.png", res.get(0).photos.get(0).name);
assertEquals("/loans/568/photos/092", res.get(0).photos.get(0).url);
assertEquals(7693, res.get(1).id);
assertEquals("Stuff", res.get(1).name);
assertEquals("newpic1.png", res.get(1).photos.get(0).name);
assertEquals("/loans/123446/photos/890", res.get(1).photos.get(0).url);

assertEquals("[{\"id\":33147,\"name\":\"Refinancing\",\"photos\":"
+ "[{\"name\":\"347.png\",\"url\":\"/loans/568/photos/092\"}],"
+ "\"username\":\"zach1985\"},{\"id\":7693,\"name\":\"Stuff\","
+ "\"photos\":[{\"name\":\"newpic1.png\",\"url\":\"/loans/123446/photos/890\"}],"
+ "\"username\":\"sengaia\"}]", mapper.writeValueAsString(res));

}
}

关于Java - 如何反序列化带有嵌套对象和列表的 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37600522/

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