Java 在对象中查找字段
我有一个输入JSON对象,我使用gson api将其转换为java vo对象。这是针对restful web服务的。我要求json中的字段是可选的。现在我如何在Java中处理这个问题,如果我不确定所有传入字段是否都存在,我将如何维护VO对象?Java 在对象中查找字段,java,json,Java,Json,我有一个输入JSON对象,我使用gson api将其转换为java vo对象。这是针对restful web服务的。我要求json中的字段是可选的。现在我如何在Java中处理这个问题,如果我不确定所有传入字段是否都存在,我将如何维护VO对象? 假设我的实际JSON是{“1”:“1”,“2”:“2”,“3”:“3”}这用于POST操作,在PUT期间,如果它带有{“2”:“B”},我将如何维护VO类。希望我说得清楚。Gson只会尝试为JSON输入字符串中表示的字段设置值。 这意味着,默认情况下,所有
假设我的实际JSON是{“1”:“1”,“2”:“2”,“3”:“3”}这用于POST操作,在PUT期间,如果它带有{“2”:“B”},我将如何维护VO类。希望我说得清楚。Gson只会尝试为JSON输入字符串中表示的字段设置值。 这意味着,默认情况下,所有字段都是可选的 JSON字符串中不存在的字段在对象中将为空 以下是一个例子:
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);
}
}
你试过什么?我们能看看密码吗?然后我们最终会帮你修复它。名字也是可选的吗?是的,我同意gson认为每个字段都是可选的,但是在处理java对象时,我如何处理可选字段呢。假设如果我想将字段值插入数据库中的表中,我使用obj.getValue3(),但我这样做的前提是value3将出现在object中。JSON中不存在的字段将为null。如果您使用的是Hibernate或MyBatis,这将导致一个空列值。如果列必须具有值,则在db中为该列设置默认值。