考虑我有一个以下格式的JSON字符串:
我如何使用Gson 解析这个问题,以便我可以编写一个方法来根据值及其父项的个别实例执行操作?
这是一个示例JSON字符串,但是,请考虑实际的JSON字符串要复杂得多,其中包含深层嵌套的子数组。
样本一:
[{"Name":"First","Parent":"none","Elements":[{"One": 1, "Two": 2,"Parent":"none"}]},
{"Name":"Second","Parent":"First","Elements":"none"},
{"Name":"Third","Parent":"Second","Elements":"none"},
{"Name":"Fourth","Parent":"Eighth","Elements":[{"One": 1, "Two": 2,"Parent":"Tenth"}]},
{"Name":"Fifth","Parent":"none","Elements":[{"One": 1, "Two": 2,"Parent":"First"}]},
{"Name":"Sixth","Parent":"Fourth","Elements":[{"One": 1, "Two": 2,"Parent":"First"}]},
{"Name":"Seventh","Parent":"Sixth","Elements":[{"One": 1, "Two": 2,"Parent":"Ninth"}]},
{"Name":"Eighth","Parent":"Seventh","Elements":[{"One": 1, "Two": 2,"Parent":"Tenth"}]},
{"Name":"Ninth","Parent":"Fourth","Elements":[{"One": 1, "Two": 2,"Parent":"Eighth"}]},
{"Name":"Tenth","Parent":"Third","Elements":[{"One": 1, "Two": 2,"Parent":"Second"}]},
{"Name":"Eleventh","Parent":"First","Elements":[{"One": 1, "Two": 2,"Parent":"First"}]}]
答案 0 :(得分:1)
或许找不到答案:
Gson目前没有内置机制来处理双向引用,在序列化或反序列化期间(除了可以选择性地排除引用父项的子类中的序列化字段*,结果JSON然后缺少父引用数据)子项或自定义序列化处理可以用新的JSON元素替换父引用,并且为了反序列化,可以沿着MJ描述的行实现自定义处理。
*从序列化中排除字段的机制是实际指定应包括所有其他字段。有关详细信息,请参阅the @Expose documentation。
答案 1 :(得分:0)
对于这种JSON字符串,在转换到某个级别后,您需要在对象中手动设置父级。 JSON转换可以帮助您实现简单的层次结构,如HAS-A和IS-A,但自我层次结构使用起来有点棘手。