如何解析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 ...
随机推荐
- ShoneSharp语言(S#)的设计和使用介绍系列(8)— 最炫“公式”风
ShoneSharp语言(S#)的设计和使用介绍 系列(8)— 最炫“公式”风 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSha ...
- PHP基础-自定义函数-变量范围-函数参数传递
一.自定义函数 function 函数名([形式参数1,形式参数2,....形式参数n]){ //各种PHP代码.... //...... return ...
- 如何在npm发布轮子
我们在前端工程开发中通常使用npm这个包管理器来安装各种好用的轮子(当然也有用yarn的),不安分的码工就想,也发布一个试试,哪怕只是一个小时候滚的铁环而不是轮子. 首先,要在 npmjs官网注册自己 ...
- JavaScript ——内部函数和匿名函数
在JS中,函数是一种数据类型,可以将它赋值给变量,因此函数可以这样创建: var func=function(){ alert("func"); } func(); 既然函数是一种 ...
- 03_K近邻算法
今天是2020年2月1日星期六,疫情延续,现在确诊人数达到了11821例,艰难困苦,玉汝于成,相信国家的力量!大家齐心协力干一件事,疫情会尽早结束的,武汉加油.前几天整理感知机算法的内容,发现写博客这 ...
- Android简单应用程序破解——runtime.apk
对于<Debugging Android Application>一文中最后附上的练习,我采用了另一种静态方法绕开原有的逻辑去破解.主要的过程如下: 利用apktool将练习的runtim ...
- ES6-json与字符串的转换
1.ES5下的json 1.1 基本概念 是对象 简写形式,名字跟值(key和value)一样,留一个就行 方法 :function一块删 即show:function(){...}等价于show() ...
- python数据类型 列表+元组
一:列表 二:元组 一:列表list: 1.列表中的每个元素都可变的,意味着可以对每个元素进行修改和删除: 2.列表是有序的,每个元素的位置是确定的,可以用索引去访问每个元素: 3.列表的所有元素放在 ...
- PELT(Per-Entity Load Tracking)
引言 对于Linux内核而言,做一款好的进程调度器是一项非常具有挑战性的任务,主要原因是在进行CPU资源分配的时候必须满足如下的需求: 1.它必须是公平的 2.快速响应 3.系统的throughput ...
- Java实现 LeetCode 462 最少移动次数使数组元素相等 II
462. 最少移动次数使数组元素相等 II 给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1. 您可以假设数组的长度最多为10000. 例如: 输 ...