java处理json格式数组(json数组转java数组)
更新:2022-11-16 12:29
本文目录一览:
- java怎么将json对象转换成json数组
- 用Java语言:从下列Json数组中只展示“productTypeName=公路零担”的数据集?
- java中把json怎么转换成数组?
- java怎么读取json格式的数据
- [java怎么把数据转成json 数组](#java怎么把数据转成json 数组)
java怎么将json对象转换成json数组
- 需要json的相关jar包
- 设置json格式字符串:
String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}";
- 建立相应的类:
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;
}
}
- 测试程序
import java.util.List;
import org.codehaus.jackson.map.ObjectMapper;
用Java语言:从下列Json数组中只展示“productTypeName=公路零担”的数据集?
java处理json,最经典的做法还是将String字符串转换成对象来处理。 需要借助第三方jar包,常见的第三方json处理jar包有:阿里巴巴的fastjson,谷歌的gson还有诸如jackson之类的。 我习惯用gson:
- 引入gson依赖或去网上下载其jar包:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>
- 根据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数组,具体用法如下
- 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);
- 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);