如何解析json格式的字符串
package com.json; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; public class JsonTest {
// 解析json(最复杂的解析方法)
public static void jieXIJSON() {
String jsonStr = "{\"errorCode\":\"0\",\"errorMsg\" :\"调用接口成功\",\"data\":[{\"username\":\"张文哲\",\"position\":\"student\"}]}";//为了避免二义性,字符串里面的双印号使用了\转义字符
JSONObject root = new JSONObject().parseObject(jsonStr);// 将json格式的字符串转换成json String errorCode = root.getString("errorCode");//定义一个字符串,其值为根据json对象中的数据名解析出的其所对应的值
String errorMsg = root.getString("errorMsg");
System.out.println("errorCode=" + errorCode + ";errorMsg=" + errorMsg); JSONArray dataArr = root.getJSONArray("data");//根据json对象中数组的名字解析出其所对应的值
System.out.println(dataArr); //对解析出的数组进行遍历
for (int i = ; i < dataArr.size(); i++) {
JSONObject dataBean = (JSONObject) dataArr.get(i);//得到数组中对应下标对应的json对象 String username = dataBean.getString("username");//根据json对象中的数据名解析出相应数据
String position = dataBean.getString("position"); System.out.println(username);//打印输出
System.out.println(position);
}
} public static void main(String[] args) {
jieXIJSON();
}
}
其打印输出结果为:
errorCode=0;errorMsg=调用接口成功
[{"position":"student","username":"张文哲"}]
张文哲
student
以上这种解析json对象的方法较为麻烦,代码较多且复杂。可以利用java的反射机制通过把json对象解析成实体类对象的方式来解析json。
首先这里有两个实体类:
package com.json; import java.util.ArrayList;
import java.util.List; public class RootEntity {
private String errorCode;
private String errorMsg;
private List<UserEntity> data;
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
public List<UserEntity> getData() {
return data;
}
public void setData(List<UserEntity> data) {
this.data = data;
}
}
package com.json;
public class UserEntity {
private String username;
private String position;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
}
解析json字符串的代码:
package com.json; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; public class JsonTest { // 解析json(简单的解析方法,也就是通过json转实体类)
public static void jsonToBean() {
String jsonStr = "{\"errorCode\":\"0\",\"errorMsg\" :\"调用接口成功\",\"data\":[{\"username\":\"张文哲\",\"position\":\"student\"}]}";
RootEntity rootEntity = new JSONObject().parseObject(jsonStr,RootEntity.class);//将json字符串转换成json对象,并通过java的反射机制创建相应的实例 System.out.println(rootEntity.getErrorCode());
System.out.println(rootEntity.getErrorMsg());
System.out.println(rootEntity.getData());
} public static void main(String[] args) {
jsonToBean();
}
}
其运行结果如下:
0
调用接口成功
[com.json.UserEntity@3f78807]
但是使用这种方法解析json字符串时一定要注意:
所对应的类的属性名称和json数据格式中的数据属性名称一定要保持一致(原因:其使用了java反射机制)

如何解析json格式的字符串的更多相关文章
- android实现json数据的解析和把数据转换成json格式的字符串
利用android sdk里面的 JSONObject和JSONArray把集合或者普通数据,转换成json格式的字符串 JSONObject和JSONArray解析json格式的字符串为集合或者一般 ...
- 在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串)
原文:在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- WP8解析JSON格式(使用DataContractJsonSerializer类)(推荐)
DataContractJsonSerializer是.NET自带的类,在解析JSON格式的时候使用起来方便快捷,至于生成方面由于暂时没用到就没去看了.使用需要引用System.Runtime.Ser ...
- Android 解析JSON格式数据
比起XML,JSON主要优势在于它的体积更小,在网络上传输的时候可以更省流量.但缺点在于,它的语义性较差,显示不如XML直观. JSON格式 : { "name_A" : &qu ...
- JavaScript中,JSON格式的字符串与JSON格式的对象相互转化
前言:JSON是一个独立于任何语言的数据格式,因此,严格来说,没有“JSON对象”和“JSON字符串”这个说法(然而”菜鸟教程“和”W3school“使用了“JSON对象”和“JSON字符串”这个说法 ...
- 校验字符串是否是JSON格式,将不规则展示的json格式的字符串进行规则展示(json格式化)
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] var str = {"code": "","svcname" ...
- Jquery解析Json格式数据
今天稍微学习了一下Json,JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. JSON采用完全独立于语言的 ...
- 如何利用fastjson将JSON格式的字符串转换为Map,再返回至前端成为js对象
//注意,这里的jsonStr是json格式的字符串,里面如果遇到双引号嵌套双引号的,一般是嵌套的双引号经过转义 // \",假如有这样的一个场景,这些字符串里面有需要的css样式的j ...
- WP8解析JSON格式(使用Newtonsoft.Json包)
DOTA2 WebAPI请求返回的格式有两种,一种是XML,一种是JSON,默认是返回JSON格式. 这里举一个简单的解析JSON格式的例子(更多JSON操作): { "response&q ...
随机推荐
- 【github技巧2】下载包加速
打开代下网站:https://g.widora.cn 直接输入 https开头的github地址 或需下载包地址的链接 获取链接 下载压缩包 备注:压缩包格式为tar,需要解压
- java——定时任务
java定时任务直接看代码 public void timeTask(){ Timer timer = new Timer(); timer.schedule(new TimerTask() { pu ...
- 面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧
接上一篇:30分钟快速上手Docker,看这篇就对了! 一. 带着问题学Dockerfile 1.疑问 我们都知道从远程仓库可以pull一个tomcat等镜像下来,然后docker run启动容器,然 ...
- mac+mamp安装composer
打开终端 php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" 安 ...
- SEPC:使用3D卷积从FPN中提取尺度不变特征,涨点神器 | CVPR 2020
论文提出PConv为对特征金字塔进行3D卷积,配合特定的iBN进行正则化,能够有效地融合尺度间的内在关系,另外,论文提出SEPC,使用可变形卷积来适应实际特征间对应的不规律性,保持尺度均衡.PConv ...
- 在win10上搭建pyspark,
最近在研究Spark,准确的说是pyspark,为了搭个测试环境,之前一直在云上开Linux机器来搭Hadoop,但是Spark可以Local执行,我就打算在本地搭个环境.遇到了一些问题,记录一下,也 ...
- ngnix随笔三
1.location模块 在server中也可以嵌套location 例 server{ listen 80; server_name www.a.com; root /data/vhosts/; ...
- 百度地图结合ECharts实现复杂覆盖物(Overlay)
先来看效果图 一 前置知识 官方Overlay-覆盖物的抽象基类 方法 返回值 描述 initialize(map: Map) HTMLElement 抽象方法,用于初始化覆盖物,当调用map.add ...
- 使用jetty作为内嵌服务器启动项目
http://blog.csdn.net/robinpipi/article/details/7557035 需求:把jetty作为内嵌的一个服务器,直接启动,web项目不用部署在应用服务器中.在网上 ...
- prism.js——让网页中的代码更好看
粗放的代码展示 有时候,网页中会插入代码.直接把代码放入<pre></pre>标签和<code></code>标签里,也算是可以在页面中显示出来. 比如 ...