我有非常复杂的JSON,有很多来自后端的嵌套字段,例如,
{
"a": ...
"b": ...
"not-required-1":{
"not-required-2":[
...
]
..
},
"not-required-3":{
"not-required-4":[
...
]
...
}
}
我只对“a”和“b”感兴趣,我可以映射到值的相应类型。但是对象有许多我不需要的字段,但是当我在“a”和“b”中进行更改时,它们应该序列化。
如果我只创建带有“a”和“b”的类型,当我序列化我的对象时,所有“不需要”的字段都消失了。唯一的选择是将不需要的每个字段映射到相应的Java类,但它们的数量为100。
澄清,
后端发送JSON,它在我的代码中处理,我需要将JSON发送回后端..虽然我不需要处理所有字段,但这并不意味着后端不需要它们。
我想将传入的JSON转换为POJO并在整个应用程序中使用它,并使用GSON将其序列化为JSON。
C#的JSON.NET库支持使用Json.Linq进行hybird对象序列化。
c#example。
class DataObject{
[JsonProperty("a")]
DataA A {get;set;}
[JsonProperty("b")]
DataB B {get;set;}
[JsonProperty("not-required-a")]
Json.Linq.JsonElement NotRequiredA {get;set;}
[JsonProperty("not-required-b")]
Json.Linq.JsonElement NotRequiredB; {get;set;}
}
在C#中,我不需要映射NotRequiredA和NotRequiredB的字段,但是在需要时它们会正确序列化。
答案 0 :(得分:2)
您可以使用JsonElement。例如:
class DataObject{
@Expose @Serialize("a")
DataA A;
@Expose @Serialize("b")
DataB B;
@Expose @Serialize("not-required-a")
JsonElement NotRequired;
...
}
答案 1 :(得分:0)
我认为这是解决方案。 制作视图模型并制作get和setter方法。
YourClass class = gson.fromJson(jsonText , YourClass .class);
class.getA();
class.getB();
指出:对于gson,您应该在json文本中实现所有功能。 例如,您有一个名为not-required-1的对象。 创建一个not-required-1类,并在该类中设置not-required-2数组。
你viewModel示例。
public class ViewModel(){ A a; B b; not-required-1 Not-required-1; }
你不需要1例如:
public class not-required-1(){ ArrayList<String> not-required-2 = new ArrayList<String>(); }
你不需要1例如: