我有一个Map属性:
private Map<String, Attribute> attributes = new HashMap<>();
Attribute
对象如下所示:
public class Attribute{
private String value;
private String name;
//with constructor setters and getters
}
如何将Map
对象的属性表示为JSON?
我得到一个JsonSyntaxException
:
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY
在下面的代码中,当我尝试使用fromJson()
转换JSON对象时:
Attribute attribute = Gson().fromJson(jsonObect,Attribute.class)
我的JSON对象如下所示:
{
"attributes":[
{
"name":"some name",
"value":"some value"
}
]
}
2条答案
按热度按时间ibps3vxo1#
很容易检查:
输出:
siotufzp2#
我得到:
"Expected BEGIN_ARRAY but was BEGIN_OBJECT"
错误,当我试图在下面的代码中使用fromJson()
转换JSON对象时:Attribute attribute = Gson().fromJson(jsonObect,Attribute.class)
以下 *JSON对象 * 既不匹配单个
Attribute
对象,也不匹配MapMap<String, Attribute>
:仔细看一下,Map到键
"attributes"
的值是 JSON-array。因此,您可以成功地将其解析为类型为
Map<String, List<Attribute>>
的Map这就是如何使用
Gson.fromJson()
和TypeToken
实现它(* 有关更多选项,请参阅此question *):