我有一个输入JSON对象,我使用gson api将其转换为java vo对象。这是为了提供宁静的网络服务。我要求json中的字段是可选的。现在我如何在Java中处理这个问题,如果不确定是否存在所有传入字段,我将如何维护VO对象? 假设我的实际JSON是{“1”:“1”,“2”:“2”,“3”:“3”}这用于POST操作和PUT期间如果它带有{“2”:“ B“}我将如何维护VO课程。希望我能说清楚。
答案 0 :(得分:0)
Gson只会尝试为JSON输入字符串中表示的字段设置值。 这意味着,默认情况下所有字段都是可选的。
JSON字符串中不存在的字段在您的对象中将为null。
以下是一个例子:
ublic class MyClass
private String value1;
private String value2;
private String value3;
public String getValue1()
{
return value1;
}
public String getValue2()
{
return value2;
}
public String getValue3()
{
return value3;
}
public void setValue1(final String newValue)
{
value1 = newValue;
}
public void setValue2(final String newValue)
{
value2 = newValue;
}
public void setValue3(final String newValue)
{
value3 = newValue;
}
public final class Main
{
private static final String testJson1 = "{ \"value1\":\"first value\"}";
private static final String testJson2 = "{ \"value2\":\"second value\"}";
private static void dumpMyClass(final MyClass myClass)
{
System.out.println("value1; " + myClass.getValue1());
System.out.println("value2; " + myClass.getValue2());
System.out.println("value3; " + myClass.getValue3());
}
/**
* @param args
*/
public static void main(String[] args)
{
Gson gson = new Gson();
MyClass myClass;
System.out.println("Test1");
myClass = gson.fromJson(testJson1, MyClass.class);
dumpMyClass(myClass);
System.out.println("\nTest2");
myClass = gson.fromJson(testJson2, MyClass.class);
dumpMyClass(myClass);
}
}