问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用Java语言:从下列Json数组中只展示“productTypeName=公路零担...

发布网友 发布时间:2022-04-26 18:12

我来回答

3个回答

热心网友 时间:2022-04-11 10:11

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>

2、根据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" +
"\"proctTypeName\":\"公路零担\"\n" +
"},\n" +
"{\n" +
"\"couponName\":\"\",\n" +
"\"payTime\":\"2021-11-15 11:11:33\",\n" +
"\"providerEndAddress\":\"\",\n" +
"\"paidMoney\":268,\n" +
"\"weihuUserId\":\"0\",\n" +
"\"proctTypeName\":\"航空运输\"\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中的数据,ProctTypeName不为“公路零担”则移除
if (!"公路零担".equals(records.get(i).getProctTypeName())) {
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 proctTypeName;
}
}

运行结果:

热心网友 时间:2022-04-11 11:29

热心网友 时间:2022-04-11 13:04

public static void main(String args[]){ List list1 = null;//基本类型 List list2 = new ArrayList();//Object类型 for (int i = 0; i < 10; i++) { list1 = new ArrayList(); list1.add(i); list2.add(i, list1); } for (int i = 0; i < lis...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
杭州金钱豹事件始末 化石草能化多大的结石 怎么找网盘的共享文件? 世界上最古老的石桥在哪里 瓜迪奥拉安切洛蒂穆里尼奥 最强3教练差别在哪 我下了一个实况足球2011,但是打不开说没有d3dx9_30.dll。然后我去下了... 运行游戏的时候报告说缺少d3dx9_35.dll。我下了这个文件但是复制到Syste... ...安装完又提示D3DX9_30,DLL没有被WINDOWS运行 求高人指导 ...战士(游戏)下载好后,说d3dx9_32.dll为无效WINDOWS映象,叫检查安装盘... 为什么我安装了d3dx9 33.dll游戏还是运行不了? 如何在jsp页面中利用小脚本将list转换为json 如何用gson将从数据库取到的数据转换成数组? 女士职业装衬衣第一颗扣子该扣上吗?领子要怎么放好看? 穿衬衣一般扣几个扣子 男女的衬衫钮扣孔有什么区别 女士衬衫配毛衣第一个扣子要扣吗 女式衬衫风衣有几颗钮扣? 普通女士衬衫纽扣用多大扣子 女生的衬衫扣子在哪边? 衬衫纽扣样式多种多样,在挑选使怎样区分是男用还是女用纽扣? 女士衬衫纽扣小孔的直径大约多少? 衬衫纽扣的男女区分??? 为什么女衬衫的扣子在左面?而男的在右面? 女生面试衬衫扣子要求 出水口要达到多少六楼才有水呀? 10升桶装水漏5小时会漏到楼下去吗? 阳台爆水管,客厅浸水,多久能渗到楼下? 水龙头没关好,清理水时地面有两桶水,大约有三小时,会漏到楼下吗? 屋里十公分左右水会漏到楼下吗 无塔供水器压力达到多少水才能上到五楼 gson字符串 复杂对象 互转 请用 gson json.stringify后的数组后台怎么接受 怎样讲JSON反序列化为复杂实体类 陇南武都最高海拔是多少武都城区南山海泼是多少? 陇南市武都区甘泉镇海拔是多少 武都是什么地方啊! 甘肃省陇南市武都区郭河乡上河里海拔多少米? 武都属于哪个省的哪个市? 《庆余年》四大宗师是哪四个? 武都是那个省的 正在热播的庆余年,里面的四顾剑为什么杀光了自己的全家族人? 想问问甘肃陇南武都的气候怎样? 《庆余年》中四顾剑为什么杀光了自己全家族人?这是什么心理因素造成的? 庆余年顾前是谁 甘肃武威市的海拔是多少? 庆余年:四顾剑无法出东夷城,怎么就成了背锅侠? 甘肃陇南有多大? 庆余年四大宗师是哪四大? 描述陇南市的地形特征 《庆余年》中的四顾剑为什么一直在背锅?