Java 在对象中查找字段

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对象,我使用gson api将其转换为java vo对象。这是针对restful web服务的。我要求json中的字段是可选的。现在我如何在Java中处理这个问题,如果我不确定所有传入字段是否都存在,我将如何维护VO对象?
假设我的实际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中为该列设置默认值。