反序列化JSON
问题描述:
我使用GSON.toJson将具有字符串和链接的hashmap的Java对象转换为JSON。从这个过程的输出是关键的组合:值对,并为下面的数组:反序列化JSON
{"a":"b", "c":"d", "featuremap":{"e":"f", "g":"h"}}
能否请您指教我如何能反序列化到这个包含密钥字符串:值对ONLY即featuremap阵列已解决,以便输出为:
{"a":"b", "c":"d", "e":"f", "g":"h"}
答
查看GSON文档。 您可以编写自己的串行器/解串器针对特定类型的
https://sites.google.com/site/gson/gson-user-guide#TOC-Writing-a-Deserializer
答
这取决于:是它总是会像
var objToFlatten = {
"a": "b",
"c": "d",
"featuremap": {
"e": "f",
"g": "h"
}
}
的对象,也可能潜在地是多嵌套的,多个物体变平?例如:
var objToFlatten = {
"a": "b",
"c": "d",
"featuremap": {
"e": "f",
"g": "h"
},
"someothermap": {
"e": "f",
"g": "h",
"nestedmap": {
"i": "j"
}
}
}
第一个是易碎,但哈克。
function copyFromObject(other) {
for (var propertyName in other) {
if (propertyName == 'featureMap') continue;
if (other.hasOwnProperty(propertyName)) {
this[propertyName] = other[propertyName];
}
}
return this;
}
var flattened = copyFromObject.call({}, objToFlatten);
后者会更干净,需要递归解决方案。你也需要弄清楚你想要做些什么像重复的条目。如果在两个名称相同的嵌套对象中有两个属性会怎么样?
+0
OP问及如何在Java而不是JavaScript中做到这一点。 – CodeMonkeyKing
这不是一个关于如何*反序列化*的问题,它是关于如何*平坦* JS对象。只是FYI。我会尽量回答下面。 – BishopRook