如何使用GSON将嵌套列表转换为JSON对象

How to convert nested list to JSON object with GSON

提问人:Dreamer 提问时间:11/10/2023 最后编辑:Dreamer 更新时间:11/10/2023 访问量:31

问:

这是 jwt 声明映射的数据结构,请参阅列表,字段/声明的数量不确定,因此我无法为其创建 POJOroles

// each name: value pair is a claim with its value, "R"
{
    "id": "someId",
    "jobTitle": "jobTitle",
    "age": "54",
    "roles": [
        "admin",
        "reader"
     ],
    "isLocked": "false"

    ...... // dynamic amount of extra fields
}

然后我用Gson().toJson()TypeToken

String claimsMapInJsonString= new Gson().toJson(jwt.getClaims(), new TypeToken<Map<String, Object>>(){}.getType());

但是,转换后的角色具有以下值claimsMapInJsonString

"roles":{"values":["admin","reader"]},

因此,成为一个块,将 String 反序列化为 JSON 对象并将角色视为列表。对此问题的任何建议都是值得赞赏的"values"

java json gson

评论

1赞 jCoder 11/10/2023
你有没有研究过真正由什么组成?我尝试将给定的JSON字符串解析为,然后将其打印出来,字段的值类型为,并将其转换回JSON会产生正确的输出。我的猜测是,无论创建对象是什么,结果都不如预期。jwt.getClaims()Map<String,Object>rolesArrayListjwt
1赞 Marcono1234 11/10/2023
添加到jCoder编写的内容中;您的角色列表的 Java 类是什么?您使用的是 Android 并且角色值是 ?Gson 不支持该类,您必须改用 Gson 的变体。org.json.JSONArraycom.google.gson.JsonArray

答: 暂无答案