JSON转为对象集合 忽略 某些 属性不接受

现有一 API 请求后返回 JSON字符串,字符串:

[{"default_assigned_to":"test2@seczone.cn","default_qa_contact":"","description":"HTTP请求以及HTTP相应部分","flag_types":{"attachment":[],"bug":[]},"id":3,"is_active":true,"name":"DAST","sort_key":0},...]

如上,的一个JSON对象数组,现需要将其转换为 一个对象集合,但又 不需要 接收所有的属性,比如 忽略 flag_types、sort_key、default_assigned_to等属性,不接受,也就是在我的实体类中是没有这些属性的,比如说只有id和name属性,怎么转换?

实体类不一样的话,只能转换为JSONObject 然后获取子对象, 一级一级的自己写转换啊

用正则表达式匹配,手动加到已有的类中。

引入fastJson依赖:

 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.21</version>
        </dependency>

用你的例子代码如下:

 public class TestJson {
    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }



    public static void main(String[] args){
        String json = "{\"default_assigned_to\":\"test2@seczone.cn\",\"default_qa_contact\":\"\",\"description\":\"HTTP请求以及HTTP相应部分\",\"flag_types\":{\"attachment\":[],\"bug\":[]},\"id\":3,\"is_active\":true,\"name\":\"DAST\",\"sort_key\":0}";
        TestJson testJson = JSON.parseObject(json, TestJson.class);
        if(testJson != null){

        }
    }
}

实体类没有的属性,反序列化为对象会自动丢掉

这是反序列化出现问题

你试一下下面代码啊,字符串转json数组啊

String jsonStr = "[{"default_assigned_to":"test2@seczone.cn","default_qa_contact":"","description":"HTTP请求以及HTTP相应部分","flag_types":{"attachment":[],"bug":[]},"id":3,"is_active":true,"name":"DAST","sort_key":0}]"
 try
  {
   JSONArray myJsonArray = new JSONArray(jsonStr);

   for(int i=0 ; i < myJsonArray.length() ;i++)
   {
    //获取每一个JsonObject对象
    JSONObject myjObject = myJsonArray.getJSONObject(i);

    //获取每一个对象中的值
    String id = myjObject.getString("id");
    System.out.println(id);
   }
  }
  catch (JSONException e)
  {
  }

用阿里云的那个json包就可以了

fastjson就可以的,我贴代码:
先新建个实体,需要的字段写进去:

 public class TestEntity {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "TestEntity{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}

再开始就可以转了:

 public class TestImpl {
    public static void main(String[] args) {
        String json = "[{\"default_assigned_to\":\"test2@seczone.cn\",\"default_qa_contact\":\"\",\"description\":\"HTTP请求以及HTTP相应部分\",\"flag_types\":{\"attachment\":[],\"bug\":[]},\"id\":3,\"is_active\":true,\"name\":\"DAST\",\"sort_key\":0},{\"default_assigned_to\":\"test2@seczone.cn\",\"default_qa_contact\":\"\",\"description\":\"HTTP请求以及HTTP相应部分\",\"flag_types\":{\"attachment\":[],\"bug\":[]},\"id\":4,\"is_active\":true,\"name\":\"test\",\"sort_key\":0}]";
        List<TestEntity> entities = JSON.parseArray(json, TestEntity.class);
        for (TestEntity entity : entities) {
            System.out.println(entity.toString());
        }
    }
}

pom.xml文件里引入的fastjson:

  <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.40</version>
        </dependency>


楼主说我代码不能执行,我贴图~

1:
fastjson 过滤指定字段

@JSONField(serialize=false)
private String message;

序列化的时候就不会包含这个字段。

2:

@JsonIgnoreProperties(value={"addressId"})//在解析成json时,忽略子属性的addressId字段
public class DicType {
private String addressId;
}

3:

@JsonIgnore    
 private String img;