为了账号安全,请及时绑定邮箱和手机立即绑定

当对象名称为整数时,Java GSON 反序列化 JSON

当对象名称为整数时,Java GSON 反序列化 JSON

青春有我 2021-10-27 13:54:38
首先,我知道如何反序列化 JSON 对象。我遇到的具体问题是我有一个 Json 对象,其中包含名为"1", "2", "3"等的数组,但在 Java 中我无法声明变量ArrayList<AnotherObject> 1;有没有比手动替换数字更好的方法?Json(大大减少):{    "object": {        "1": [{...}],        "2": [{...}],        "3": [{...}],        "4": [{...}],        "5": [{...}],        "6": [{...}],        "7": [{...}]    }}提前致谢
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

这是您可以GSON用来反序列化 JSON 的方法:


public static void main(String[] args) {

    final String json = "{\n" +

        "    \"object\": {\n" +

        "        \"1\": [{ \"id\" : 111 }],\n" +

        "        \"2\": [{ \"id\" : 222 }],\n" +

        "        \"3\": [{ \"id\" : 333 }]\n" +

        "    }\n" +

        "}\n";

    final Gson gson = new GsonBuilder()

        .create();

    final ObjectWrapper value = gson.fromJson(json, ObjectWrapper.class);


    System.out.println(value.object);

    System.out.println(value.object.keySet());

    System.out.println(value.object.get(1));

}


// This is top-most object we want to deserialize from JSON

static class ObjectWrapper {

    // Didn't bother about proper naming while it is better to give a meaningful name here

    private Map<Integer, List<Element>> object;

}


static class Element {

    // Added this attribute to demonstrate that objects within array are properly read

    private int id;

    @Override

    public String toString() {

        return "{id=" + id + "}";

    }

}


查看完整回答
反对 回复 2021-10-27
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我现在使用以下解决方法:


json.replace("\"1\"","\"one\"")

    .replace("\"2\"","\"two\"")

    .replace("\"3\"","\"three\"")

    .replace("\"4\"","\"four\"")

    .replace("\"5\"","\"five\"")

    .replace("\"6\"","\"six\"")

    .replace("\"7\"","\"seven\"");

查看完整回答
反对 回复 2021-10-27
?
湖上湖

TA贡献2003条经验 获得超2个赞

这些数字看起来很像数组的索引。如果是这样,您可以删除所有这些对象并使整个对象成为一个数组。所以你会得到一个数组数组。


查看完整回答
反对 回复 2021-10-27
  • 3 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信