我正在尝试弄清楚平展Json和平展Json到底是什么。任何链接或博客都将有所帮助。
也没有其他问题,我正在尝试将扁平化的json属性反序列化为objectmapper对象。我正在尝试的Json具有以下格式。
{
"MyUserID": "45345dfsf4545",
"attributes": {
"ArrayAttribute1[0].alertMessage": "You have consumed all of your data allowance",
"ArrayAttribute1[0].promoName": "MyPromoTest",
"ArrayAttribute2[0].showmorepromosbutton": "true",
"ArrayAttribute1[0].promoPrice": "P 149.00",
"userType": 1,
"Attribute1": "Jan 28 2016 . 3:09PM",
"Attribute1": "true",
"Attribute2.validityColor": "RED",
"Attribute2.subscriberBal": "P 29.5",
}
}
答案 0 :(得分:0)
找到了这个存储库(https://github.com/wnameless/json-flattener)来展平和取消展平json。确保先将其展开为字符串,然后再将其提供给ObjectMapper。不幸的是,没有找到定义差异的规范。
答案 1 :(得分:0)
平化意味着将JSON对象放入一个类似单层结构的结构(也称为平面结构),即没有子对象或父对象,所有都是键值对。嵌套对象可通过点运算符访问。 相反,非扁平化是指将扁平化结构放入存在父子结构的Mutli级结构中。
您需要将未展平的结构传递给Object-mapper以便反序列化。
以下示例将有助于更好地理解它
嵌套的JSON对象
{ "a":
{ "b": 1,
"c": null,
"d": [false, true]
},
"e": "f",
"g": 2.3
}
平整的JSON
{ "a.b": 1,
"a.c": null,
"a.d[0]": false,
"a.d[1]": true,
"e": "f",
"g": 2.3
}
Java Map像扁平化的JSON
{a.b=1, a.c=null, a.d[0]=false, a.d[1]=true, e=f, g=2.3}
为什么需要展平? 如果您没有JSON Object的内部结构,那么访问其中的所有元素将非常麻烦,因此简单的解决方案是将所有内容置于同一级别,并且点运算符描述了Objects的深度。 因此,展平使其更易于访问内部元素。
串行化和反串行化只能在未扩展的JSON上进行。