java处理json格式数组(json数组转java数组)

发布时间:2023-12-08

java处理json格式数组(json数组转java数组)

更新:2022-11-16 12:29

本文目录一览:

  1. java怎么将json对象转换成json数组
  2. 用Java语言:从下列Json数组中只展示“productTypeName=公路零担”的数据集?
  3. java中把json怎么转换成数组?
  4. java怎么读取json格式的数据
  5. [java怎么把数据转成json 数组](#java怎么把数据转成json 数组)

java怎么将json对象转换成json数组

  1. 需要json的相关jar包
  2. 设置json格式字符串:
String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}";
  1. 建立相应的类:
public class StudentList {
    List<Student> student;
    public List<Student> getStudent() {
        return student;
    }
    public void setStudent(List<Student> student) {
        this.student = student;
    }
}
public class Student {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
  1. 测试程序
import java.util.List;
import org.codehaus.jackson.map.ObjectMapper;

用Java语言:从下列Json数组中只展示“productTypeName=公路零担”的数据集?

java处理json,最经典的做法还是将String字符串转换成对象来处理。 需要借助第三方jar包,常见的第三方json处理jar包有:阿里巴巴的fastjson,谷歌的gson还有诸如jackson之类的。 我习惯用gson:

  1. 引入gson依赖或去网上下载其jar包:
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.3.1</version>
</dependency>
  1. 根据json串,定义对象: 首先定义json最外层,我称其为Response,Response中有根节点data: 这里我用了lombok的@Data注解,自动生成getter、setter、toString等方法。 然后定义根节点对象Data1,里面有Record集合records: 之后就是定义Record的各个字段: 现在我就有了完整的数据结构,使用gson进行转换即可: 接下来拿着response对象进行正常的java逻辑处理就行: 完整代码:
public class TController {
    public static void main(String[] args) {
        String jsonString = "{\n" +
            "    \"data\":{\n" +
            "        \"records\":[\n" +
            "            {\n" +
            "                \"couponName\":\"\",\n" +
            "                \"payTime\":\"2021-11-15 11:11:33\",\n" +
            "                \"providerEndAddress\":\"\",\n" +
            "                \"paidMoney\":268,\n" +
            "                \"weihuUserId\":\"0\",\n" +
            "                \"productTypeName\":\"公路零担\"\n" +
            "            },\n" +
            "            {\n" +
            "                \"couponName\":\"\",\n" +
            "                \"payTime\":\"2021-11-15 11:11:33\",\n" +
            "                \"providerEndAddress\":\"\",\n" +
            "                \"paidMoney\":268,\n" +
            "                \"weihuUserId\":\"0\",\n" +
            "                \"productTypeName\":\"航空运输\"\n" +
            "            }\n" +
            "        ]\n" +
            "    }\n" +
            "}";
        Gson gson = new Gson();
        Response response = gson.fromJson(jsonString, Response.class);
        Data1 data = response.getData(); // 取出data
        List<Record> records = data.getRecords(); // 取出records
        for (int i = 0; i < records.size(); i++) {
            // 循环判断records中的数据,ProductTypeName不为“公路零担”则移除
            if (!"公路零担".equals(records.get(i).getProductTypeName())) {
                records.remove(i);
                i--;
            }
        }
        data.setRecords(records); // 覆盖原有的records
        response.setData(data); // 覆盖原有的data
        System.out.println(gson.toJson(response, Response.class)); // 转成json字符串输出
    }
    @Data
    private class Response {
        private Data1 data;
    }
    @Data
    private class Data1 {
        private List<Record> records;
    }
    @Data
    private class Record {
        private String couponName;
        private String payTime;
        private String providerEndAddress;
        private String paidMoney;
        private String weihuUserId;
        private String productTypeName;
    }
}

运行结果:

java中把json怎么转换成数组?

使用原生的解析:

String json = "...";
// 遍历数组里的值,得到每个独立的对象,然后获取对应的值设置到声明好的对象中,最终创建对象完成后添加到集合中,如我自己代码里的片段:
for (int j = 0; j < array.length(); j++) {
    obj = array.getJSONObject(j);
    Data data = new Data();
    mDataList.add(data);
}

数组声明 在数组的声明格式里,“数据类型”是声明数组元素的数据类型,可以是java语言中任意的数据类型,包括简单类型和结构类型。“数组名”是用来统一这些相同数据类型的名称,其命名规则和变量的命名规则相同。 数组声明之后,接下来便是要分配数组所需要的内存,这时必须用运算符new,其中“个数”是告诉编译器,所声明的数组要存放多少个元素,所以new运算符是通知编译器根据括号里的个数,在内存中分配一块空间供该数组使用。利用new运算符为数组元素分配内存空间的方式称为动态分配方式。 以上内容参考:百度百科-数组

java怎么读取json格式的数据

java可以使用JSONObject和JSONArray来操作json对象和json数组,具体用法如下

  1. java对象与json串转换: java对象—json串:
JSONObject JSONStr = JSONObject.fromObject(object);
String str = JSONStr.toString();

json串—java对象:

JSONObject jsonObject = JSONObject.fromObject(jsonString);
Object pojo = JSONObject.toBean(jsonObject, pojoClass);
  1. java数组对象与json串转换: java数组—json串:
JSONArray arrayStr = JSONArray.fromObject(List<?>);
String str = arrayStr.toString();

json串—java数组:

JSONArray array = JSONArray.fromObject(str);
List<?> list = JSONArray.toList(array, ?.class);

java怎么把数据转成json 数组

有两种方法实现: (1)直接转换: 创建JSONArray对象、JSONObject对象,通过put方法将其数据以键值对的形式填充,如例:

// 假如有一个Java实体类Person,包括以下属性:phone、sex、married、address。
ArrayList<Person> persons = new ArrayList<Person>();
for (int i = 0; i < 3; i++) {
    persons.add(new Person("138******67", "女", true, "北京朝阳区")); // 填充Java实体类集合
}
JSONArray array = new JSONArray(); // Json格式的数组形式
JSONObject obj; // json格式的单个对象形式
for (int i = 0; i < persons.size(); i++) {
    obj = new JSONObject();
    // 依次填充每一个Java实体对象
    try {
        obj.put("phone", persons.get(i).getPhone()); // json通过put方式以key-value形式填充
        obj.put("sex", persons.get(i).getSex());
        obj.put("married", persons.get(i).getMarried());
        obj.put("address", persons.get(i).getAddress());
        array.put(obj); // 将JSONObject添加入JSONArray
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

(2)通过GSON工具实现: 只需要创建GSON对象,通过toJson方法转换即可。如例:

// 模拟Java数据
Person person = new Person("敏敏", 23, "女", "北京市海淀区");
// 创建GSON对象
Gson gson = new Gson();
// 调用toJson方法即可转换为字符串的json格式
String json = gson.toJson(person);