返回Json中的选定字段以获取Java中的API调用

时间:2016-08-20 17:49:17

标签: java json gson

当调用特定的 API时,是否可以在Json中仅返回特定字段。我使用了“transient”:但这将是Object级别,因此适用于所有API调用。

示例:完整的Json是

[{"field1":"a","field2":"b","field3":"c"},{"field1":"d","field2":"e","field3":"f"},{"field1":"g","field2":"h","field3":"i"}]

根据对特定用户的API调用,“json输出”特定于API调用。根据API调用,它可以是以下任何一种。

[{"field1":"a"},{"field1":"d"},{"field1":"g"}]

OR

[{"field2":"b"},{"field2":"e"},{"field2":"h"}]

OR

[{"field3":"c"},{"field3":"f"},{"field3":"i"}]

或以上的组合。

E.g。以上示例的代码如下所示。

public class childObj {

    public String field1;
    public String field2;
    public String field3;


    public childObj(String field1, String field2, String field3) {
        super();
        this.field1 = field1;
        this.field2 = field2;
        this.field3 = field3;
    }

}

主类定义如下:

import java.util.ArrayList;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class ParentAndChildObjects {

    public static void main(String[] args) {

        ArrayList<childObj> childObjList    = new ArrayList<childObj>();

        childObjList.add(new childObj("a","b","c"));
        childObjList.add(new childObj("d","e","f"));
        childObjList.add(new childObj("g","h","i"));

        Gson gson = new GsonBuilder().create();

        String myString = gson.toJson(childObjList);

        System.out.println(myString);

    }

}

1 个答案:

答案 0 :(得分:0)

如果你使用Java中的标准JSON库Jackson,你可以使用@View注释来过滤你想要的结果对象。

对于动态选择,您必须根据您的要求使用特定注释。此链接可以帮助您 - &gt; http://www.cowtowncoder.com/blog/archives/2011/02/entry_443.html

例如,对于完全动态过滤,请查看@JsonFilter

的使用