json转list实现方案

废话不多说,直接上代码:

需要转换的为list的json代码:

[{
"id":104,"mid":16,"up_count":103,"count_date":"2016-08-15","name":"荼丸","fans":18006,"contributes":2,"last_contribute_id":3905532,"last_contribute_name":"【2016拜年祭单品】站娘Collection(上)","last_contribute_time":"2016-02-22 08:00:00"
},{"id":105,"mid":18,"up_count":104,"count_date":"2016-08-15","name":"暁の赤月","fans":468,"contributes":1,"last_contribute_id":654,"last_contribute_name":"【NDS】节奏天国LOLI与猴子附真人对比版","last_contribute_time":"2009-10-15 15:54:47"},{"id":106,"mid":20,"up_count":105,"count_date":"2016-08-15","name":"恶魔晓月曲","fans":2849,"contributes":1,"last_contribute_id":39,"last_contribute_name":"坚持下去吧","last_contribute_time":"2009-07-13 07:35:51"},{"id":107,"mid":24,"up_count":106,"count_date":"2016-08-15","name":"不思議","fans":2252,"contributes":11,"last_contribute_id":824467,"last_contribute_name":"『逆転裁判5』Soundtrack192k","last_contribute_time":"2013-11-06 20:51:23"},{"id":108,"mid":32,"up_count":107,"count_date":"2016-08-15","name":"一条黑黑","fans":422,"contributes":1,"last_contribute_id":743417,"last_contribute_name":"企鹅页游黑科技——英雄之刃","last_contribute_time":"2013-09-02 01:10:35"},{"id":109,"mid":37,"up_count":108,"count_date":"2016-08-15","name":"折射","fans":2458,"contributes":4,"last_contribute_id":4954037,"last_contribute_name":"[PV向?]少女与战车——OverPanzer","last_contribute_time":"2016-06-13 05:28:01"
}]

采取方案:建需要填充至list中的实体bean,注意,最好将json对应的实体中的具有时间类型的字段改为String类型,譬如:last_contribute_time 字段的属性在bean中设为String,不然在转换时会抛出转换失败的异常

转换的工具代码:

public static <T> List<T> fromJson2Array(String json,Class<T> clazz) throws Exception{
        List<T> list = new ArrayList<T>();
        JsonArray array = new  JsonParser().parse(json).getAsJsonArray();
        for(final JsonElement elem:array){
            list.add(new Gson().fromJson(elem,clazz));
        }
        return list;
    }

调用代码:

List<BumFansUserInfo> fansList = JsonUtils.fromJson2Array(json, BumFansUserInfo.class);
经过此番转换便完成了json到list的转换
### Java中将字符串换为JSON对象并进一步换为列表 在Java编程环境中,可以利用多种库来实现`String`到`JSON`对象再到`List`类型的换。以下是基于不同库的具体做法。 #### 使用Gson库完成换过程 对于给定的JSON格式字符串,可以通过Gson库轻松解析成相应的Java对象或集合类型。下面是一个具体的例子: ```java import com.google.gson.Gson; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { String jsonString = "[{\"name\":\"Alice\",\"age\":23},{\"name\":\"Bob\",\"age\":30}]"; Gson gson = new Gson(); // 将JSON字符串为指定类数组 SysUser[] usersArray = gson.fromJson(jsonString, SysUser[].class); // 数组为列表 List<SysUser> userList = Arrays.asList(usersArray); // 输出验证换结果 for (SysUser user : userList){ System.out.println(user.getName() + " is " + user.getAge()); } } private static class SysUser { // 假设这是目标实体类定义 private String name; private int age; public String getName(){ return this.name; } public int getAge(){ return this.age; } } } ``` 这段代码展示了如何通过Gson库中的`fromJson()`函数把一个代表多个用户信息的JSON串先映射至自定义的`SysUser`类组成的数组上,之后借助于`Arrays.asList()`方法将其变为`List<SysUser>`形式[^4]。 #### 利用Jackson库执行相同的操作 除了Gson之外,Jackson也是一个非常流行的处理JSON序列化/反序列化的工具包,在此提供另一种解决方案: ```java import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.util.List; public class JacksonExample { public static void main(String[] args) throws IOException { ObjectMapper mapper = new ObjectMapper(); String jsonInput = "[{'name':'Charlie','age':28}, {'name':'David','age':25}]"; try{ // JSON字符串直接为泛型列表 List<Person> personList = mapper.readValue( jsonInput, new TypeReference<List<Person>>() {} ); // 验证输出 for(Person p : personList){ System.out.printf("%s is %d years old.%n",p.getName(), p.getAge()); } } catch(Exception e){ e.printStackTrace(); } } private static class Person{ // 定义用于存储数据的对象结构 private String name; private Integer age; public String getName(){return name;} public void setName(String name){this.name=name;} public Integer getAge(){return age;} public void setAge(Integer age){this.age=age;} } } ``` 这里采用的是Jackson的核心组件——`ObjectMapper`来进行读取和写入操作。值得注意的是,当涉及到复杂的数据类型比如这里的`List<Person>`时,需要配合使用`TypeReference`辅助类以便能够正确识别待化的目标类型[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值