查找对象中的字段

时间:2014-09-09 16:23:36

标签: java json

我有一个输入JSON对象,我使用gson api将其转换为java vo对象。这是为了提供宁静的网络服务。我要求json中的字段是可选的。现在我如何在Java中处理这个问题,如果不确定是否存在所有传入字段,我将如何维护VO对象?  假设我的实际JSON是{“1”:“1”,“2”:“2”,“3”:“3”}这用于POST操作和PUT期间如果它带有{“2”:“ B“}我将如何维护VO课程。希望我能说清楚。

1 个答案:

答案 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);
    }
}