Java工具类-JSON转实体类对象工具(可复制)

准备工作

引入pom

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.78</version>
</dependency>
    
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.22</version>
 </dependency>    

实体bean

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Integer id;
    //姓名
    private String name;
}

 1.JSONObject获取所有的key

技巧:
JSONObject获取key:↓
	JSONObject obj;
	for (Map.Entry<String, Object> entry : cutReceiveAlarmMessageObject.entrySet()) {
           String s = entry.getKey();
    }

2.集合中实体对象转换 list中Enrey转Dto 

list中Enrey转Dto:↓
	List<WarningNoticeDto> warningNoticeDtoList = warningNoticeList.getInfo().getList().stream().map(this::getEntryToDto).collect(Collectors.toList());
	/**
     * entry转DTO
     * @param warningNotice entry
     * @return dto
     */
    private WarningNoticeDto getEntryToDto(WarningNotice warningNotice) {
        WarningNoticeDto warningNoticeDto = new WarningNoticeDto();
        BeanUtils.copyProperties(warningNotice, warningNoticeDto);
        return warningNoticeDto;
    }

3.字符串转List

import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.JSONObject;

String str = "[
  {
    "id": 5,
    "nodeIdArr": "[\"221\",\"222\"]",
    "nodeNameArr": "[\"enb_221\",\"2222\"]",
    "upperLimitOfTheBusyTimeThreshold": 9,
    "lowerLimitOfTheBusyTimeThreshold": 2,
    "dateRangeBeginTime": 1701648000000,
    "dateRangeEndTime": 1701682200000,
    "createTime": 1701676594000,
    "updateTime": 1701737385000,
    "activeState": "1"
  },
  {
    "id": 6,
    "nodeIdArr": "[\"2003\",\"501\",\"10010\"]",
    "nodeNameArr": "[\"CityA\",\"501\",\"Vir1\"]",
    "upperLimitOfTheBusyTimeThreshold": 9,
    "lowerLimitOfTheBusyTimeThreshold": 2,
    "dateRangeBeginTime": 1701648000000,
    "dateRangeEndTime": 1701682200000,
    "createTime": 1701676641000,
    "updateTime": 1701737382000,
    "activeState": "1"
  }]"
List<BusyTimeIndicatorAlarmThreshold> busyTimeIndicatorAlarmThresholdList = new ArrayList<>();
busyTimeIndicatorAlarmThresholdList = JSONObject.parseObject(str, new TypeReference<List<BusyTimeIndicatorAlarmThreshold>>() {});

方式一、List busyTimeIndicatorAlarmThresholdList = new ArrayList<>();
busyTimeIndicatorAlarmThresholdList = JSONObject.parseObject(str, new TypeReference<List>() {});

方式二、List userList = JSONArray.parseArray(str, User.class);


4.json字符串转JSONObject

@Test
public void jsonStrConverJSONObject(){
    String str = "{\"id\":1,\"name\":\"tom\"}";
    JSONObject jsonObject = JSONObject.parseObject(str);
    System.out.println(jsonObject);     
}

输出:{“name”:“tom”,“id”:1}

5.list根据ids数组过滤list 

@Test
public void listFilter() {
    List<User> list = new ArrayList<>();
    list.add(new User(1, "a"));
    list.add(new User(2, "b"));
    list.add(new User(3, "c"));
    list.add(new User(4, "d"));
    list.add(new User(5, "e"));
    list.add(new User(6, "f"));
    list.add(new User(7, "g"));
    list.add(new User(8, "h"));
    list.add(new User(9, "i"));
    list.add(new User(10, "j"));

    //注意:数组类型必须使用Integer才可以,使用int会判断失败
    Integer[] arr = new Integer[]{1,2,5,6,9};
    List<User> filterList = list.stream().filter(item -> Arrays.asList(arr).contains(item.getId())).collect(Collectors.toList());
    filterList.stream().forEach(System.out::println);
}

6.json字符串转JavaBean对象

@Test
public void jsonStrConverBean(){
    String str = "{\"id\":1,\"name\":\"tom\"}";
    User user = JSONObject.parseObject(str, User.class);
    System.out.println(user);   
}

 7.json对象转javabean

@Test
public void JSONObjectConverBean(){
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("id", 1);
    jsonObject.put("name", "tom");
    User user = JSONObject.toJavaObject(jsonObject, User.class);
    System.out.println(user);   
}

 输出:User(id=1, name=tom)

8.jsonObject转map 

@Test
public void JSONObjectConverMap(){
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("id", 1);
    jsonObject.put("name", "tom");
    Map<String,String> map = JSONObject.parseObject(jsonObject.toJSONString(), Map.class);
    System.out.println(map);   
}

输出:{name=tom, id=1}

9.List<User>转jsonArray 

@Test
public void listConverjJsonArray(){
    List<User> list = new ArrayList<>();
    list.add(new User(1, "a"));
    list.add(new User(2, "b"));
    //错误写法,因为list.toString()输出[User(id=1, name=a), User(id=2, name=b)]。这东西无法json解析,会报错:com.alibaba.fastjson.JSONException: syntax error, pos 2, line 1, column 3[User(id=1, name=a), User(id=2, name=b)]
    //        JSONArray jsonArray =JSONArray.parseArray(list.toString());
    //正确写法,简写方式
    JSONArray jsonArray =JSONArray.parseArray(JSONObject.toJSONString(list));

    //正确写法,复杂方式
    //        JSONArray jsonArray = new JSONArray();
    //        JSONObject jsonObject = null;
    //        for (User user: list) {
    //            jsonObject = new JSONObject();
    //            jsonObject.put("id", user.getId());
    //            jsonObject.put("name", user.getName());
    //            jsonArray.add(jsonObject);
    //        }
    System.out.println(jsonArray);
}

10.jsonArray转成String[]

@Test
public void jsonArrayConverStringArray(){
    JSONArray jsonArray = new JSONArray();
    jsonArray.add(0, "100");
    jsonArray.add(1, "101");
    jsonArray.add(2, "102");
    System.out.println("jsonArray:" + jsonArray);

    String[] stringArr = new String[jsonArray.size()];
    for (int i = 0; i < jsonArray.size(); i++) {
        stringArr[i] = jsonArray.get(i).toString();
    }
    for(String str : stringArr) {
        System.out.println(str);
    }
}

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在将 JSON 换为 List 实体类对象时,如果 JSON 中包含 long 类型字段,可以使用 Gson 库进行处理。Gson 库是一个 Google 开发的用于处理 JSON 格式数据的 Java 库,支持将 JSON 字符串化为 Java 对象,并且可以通过注解配置来实现灵活的换。 在使用 Gson 库时,需要将 long 类型换为字符串类型,避免精度丢失。可以通过自定义 Gson 换器来实现类型换。具体实现如下: 1. 定义实体类对象: ```java public class User { private String name; private long id; // getter 和 setter 方法 } ``` 2. 使用 Gson 换器将 JSON 换为 List<User> 对象: ```java Gson gson = new GsonBuilder() .registerTypeAdapter(User.class, new JsonDeserializer<User>() { @Override public User deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { JsonObject jsonObject = json.getAsJsonObject(); User user = new User(); user.setName(jsonObject.get("name").getAsString()); String idStr = jsonObject.get("id").getAsString(); user.setId(Long.parseLong(idStr)); return user; } }) .create(); String jsonStr = "[{\"name\":\"张三\",\"id\":1001},{\"name\":\"李四\",\"id\":1002}]"; Type userListType = new TypeToken<List<User>>() {}.getType(); List<User> userList = gson.fromJson(jsonStr, userListType); ``` 在上面的代码中,我们通过 `registerTypeAdapter` 方法注册了一个自定义的 `JsonDeserializer<User>` 类型换器,重写了 `deserialize` 方法来实现 long 类型字段的换。通过 `JsonElement` 和 `JsonObject` 对象获取 JSON 中的字段值,并将 long 类型字段换为字符串类型后再进行解析。 最后,我们使用 `fromJson` 方法将 JSON 字符串换为 List<User> 对象。 注意:在使用 Gson 库时,需要添加 Gson 依赖。可以通过 Gradle 或 Maven 等构建工具来添加依赖,例如: Gradle: ```groovy dependencies { implementation 'com.google.code.gson:gson:2.8.6' } ``` Maven: ```xml <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version> </dependency> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值