如何使用 Google Json 解析 API (Gson) 解析 json 中的一些动态字段?
我有一个结构化的 Json 在某些字段中是可变的,如何使用 Gson google json api 在 Java 中正确解析(反序列化)它?
Json 示例:
{
type: 'sometype',
fields: {
'dynamic-field-1':[{value: '', type: ''},...],
'dynamic-field-2':[{value: '', type: ''},...],
...
}
动态字段将根据发送的结构更改其名称。
有办法吗?
I have a structured Json to be mutable in some fields, how can I parse (deserialize) it correctly in Java using Gson google json api ?
Json example:
{
type: 'sometype',
fields: {
'dynamic-field-1':[{value: '', type: ''},...],
'dynamic-field-2':[{value: '', type: ''},...],
...
}
The dynamic-fields will change its name depending on the structure sent.
Is there a way ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以按照 Raph Levien 的建议使用自定义(反)序列化,但是,Gson 本身就可以理解映射。
如果运行此命令,您将获得输出 {"A":"B"}
映射现在可以包含您的动态键。要再次读取该 Json,您需要通过 TypeToken 告诉 Gson 有关类型信息,这是 Gson 记录 Java 擦除的运行时类型信息的方式。
我希望这有帮助。 :)
You can use custom (de)serialization as Raph Levien suggests, however, Gson natively understands maps.
If you run this you will get the output {"A":"B"}
The map can now contain your dynamic keys. To read that Json again you need to tell Gson about the type information through a TypeToken which is Gson's way of recording the runtime type information that Java erases.
I hope that helps. :)
使用 google-gson 我这样做:
然后你就可以使用 json 了。例如:
Using google-gson I do it this way:
and then you can work with json. e.g.:
是的,编写一个采用通用 JsonElement 对象的自定义反序列化器。这是一个示例:
http://benjii.me/2010/ 04/反序列化-json-in-android-using-gson/
Yes, write a custom deserializer that takes a generic JsonElement object. Here's an example:
http://benjii.me/2010/04/deserializing-json-in-android-using-gson/