如果不是Android开发环境的话,首先需要引入处理JSON数据的包:json-lib-223-jdk15jar
Java样例程序如下:
import netsfjsonJSONArray;import netsfjsonJSONObject;
public class DoJSON {
public static void main(String[] args) {
JSONArray employees = new JSONArray(); //JSON数组
JSONObject employee = new JSONObject(); //JSON对象
employeeput("firstName", "Bill"); //按“键-值”对形式存储数据到JSON对象中
employeeput("lastName", "Gates");
employeesadd(employee); //将JSON对象加入到JSON数组中
employeeput("firstName", "George");
employeeput("lastName", "Bush");
employeesadd(employee);
employeeput("firstName", "Thomas");
employeeput("lastName", "Carter");
employeesadd(employee);
Systemoutprintln(employeestoString());
for(int i=0; i<employeessize(); i++) {
JSONObject emp = employeesgetJSONObject(i);
Systemoutprintln(emptoString());
Systemoutprintln("FirstName :\t" + empget("firstName"));
Systemoutprintln("LastName : \t" + empget("lastName"));
}
}
}
运行效果:
[{"firstName":"Bill","lastName":"Gates"},{"firstName":"George","lastName":"Bush"},{"firstName":"Thomas","lastName":"Carter"}]
{"firstName":"Bill","lastName":"Gates"}
FirstName : Bill
LastName : Gates
{"firstName":"George","lastName":"Bush"}
FirstName : George
LastName : Bush
{"firstName":"Thomas","lastName":"Carter"}
FirstName : Thomas
LastName : Carter
json中取出对象的属性值步骤如下:
1、打开vscode,创建一个测试页面JsonTesthtml,用于演示在js中如何获取json对象的属性集合。
2、在测试页面中,定义一个js变量,将其赋值为json格式的字符串,用于模拟从后台返回过来的json字符串值,以及后续转换为json对象,和获取其属性集合。var json = "[{\"Col1\": \"Hello\", \"Col2\": \"World\"}, {\"Col1\": \"您好\", \"Col2\": \"世界\"}]"。
3、使用js的eval函数,将json字符串的变量值,转换为json对象。var $json = eval("(" + json + ")");
4、得到json对象之后,使用for-in循环语句,得到json对象的序号,也就是,这个json对象中,还有多少个子对象。
5、因为js是弱类型的语言,并不要求json对象中的每个子对象属性都一样。所以,在得到序号之后,使用Objectkeys($json[i]); 就能获取到当前json子对象的属性集合。
6、如果想要获取到json对象的每个具体的列名和值,就需要再加一个for循环,遍历列名,得到列名和值。
获取JSON的值。 就是解析JSON数据
如果是简单的JSON数据, 并且只需要提取少量数据的值, 那么可以使用字符串的 *** 作来实现,比如StringsubString()等
如果是比较复杂的JSON数据,或者需要提取的值比较多, 那么可以使用Gson, FastJSon 等第三方的jar来实现
简单的Demo示例
第三方包使用的是Gson
import comgooglegsonJsonElement;import comgooglegsonJsonObject;
import comgooglegsonJsonParser;
public class GsonTest {
public static void main(String[] args) {
String strJson = "{ \"name\": \"张三\", \"age\": 12 }";
JsonParser parser = new JsonParser();
JsonElement je = parserparse(strJson);
JsonObject jobj = jegetAsJsonObject();//从json元素转变成json对象
String name = jobjget("name")getAsString();//从json对象获取指定属性的值
Systemoutprintln(name);
int age = jobjget("age")getAsInt();
Systemoutprintln(age);
}
}
某日有个需求,后端返回的 jsonObject 里面的 key 需要按照某个顺序排序,我上网查了一下,可以使用 LinkedHashMap 创建JSONObject
这样子 key 就会按照某个添加的顺序读取了,但是我发现将数据返回前端的时候,前端获取的 key 并不是按照后端添加的顺序返回的,这样我很头疼,最直接就是将结构变成 List 集合,但是我不想修改返回的结构,怎么办呢?
后面想到一个办法,就是将返回的 JSONObject 或者 LinkedHashMap 变成一个 String 字符串返回,让前端去解析成这样之前的结构即可。完美解决!
给你说一个方法
1 先把json转化为数组
2 打印输出数组就可以(如果是要得到其中的某个元素,就在输出数组的时候加上
键名,一般来说没有规定键名的时候是0 ,1,2这些)
<%@ page language="java" import="javautil" pageEncoding="gbk"%>
<%@page import="orgjsonsimpleJSONObject"%>
<%@page import="orgjsonsimpleparserJSONParser"%>
<%@page import="orgjsonsimpleJSONValue"%>
<%@page import="orgjsonsimpleJSONArray"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 401 Transitional//EN">
<html>
<head>
<title>获取json内部数据html</title>
<meta >
<meta >
<meta >
<!--<link rel="stylesheet" type="text/css" href="/stylescss">-->
</head>
<body>
<table id="deptPersonList" title="部门信息列表" class="easyui-datagrid"
singleSelect="true" fit="true" pagination="true"
idField="deptPersonId" url="deptPersonInfo" width="800px"
rownumbers="false" striped="true">
<thead>
<tr>
<th field="deptPersonId" width="6" checkbox="true">
编号
</th>
<th field="sysPerson" width="60%" sortable="true">
人员名称
</th>
<th field="sysDepartment" width="30%" sortable="true">
部门名称
</th>
</tr>
</table>
</body>
<script type="text/javascript">
/
json格式如下
{"total":11,"rows":[{"deptPersonId":"1","sysDepartment":{"deptName":"人事"},"sysPerson":{"personName"}}]}
/
var json = {"total":11,
"rows":[{"deptPersonId":"1",
"sysDepartment":{"deptName":"人事"},
"sysPerson":{"personName":"张丽安"}
}
]
};
/
获取josn对象数据,是一层一层进行的。
/
/
js获取json元素中的子元素如deptName,personName
/
alert(jsonrows[0]sysDepartmentdeptName);
alert(jsonrows[0]sysPersonpersonName);
</script>
<%
//jsp获取json元素中的子元素如deptName,personName
//================
//使用 json_simplejar包 处理json字符
//然后获取json对象中的数据
//================
//声明JSON字符串
String json = "{\"tota\":11,"+
"\"rows\":["+
"{\"deptPersonId\":\"1\","+
"\"sysDepartment\":{"+
"\"deptName\":\"人事\"},"+
"\"sysPerson\":{\"personName\":\"张丽安\"}"+
"}"+
"]"+
"}";
//===============================
// 最终的JSON字符如下:
// {"total":11,
// "rows":[{"deptPersonId":"1",
// "sysDepartment":{"deptName":"人事"},
// "sysPerson":{"personName":"张丽安"}
// }
// ]
// }
//
// 注意查结构
//================================
//{"tota":11,"rows":[{"sysPerson":{"personName":"张丽安"},"sysDepartment":{"deptName":"人事"},"deptPersonId":"1"}]}
//将字符串转化为JSON对象
Object JSON = JSONValueparse(json);
//JSONObject继承自 HashMap
JSONObject JO = (JSONObject) JSON;
outprint(JSONtoString());
outprint("<br>");
//查看JSONObject对象元素长度
int length = JOsize();
outprint(length);
outprint("<br>");
outprint(JOtoString());
outprint("<br>");
//循环打印出元素数据
//for(int i = 0 ;i < length ; i++ ){
outprint("tota:<font color=red>" + JOget("tota") + "</font>");
outprint("<br>");
outprint("tota:<font color=red>" + JOget("rows") + "</font>");
outprint("<br>");
String rows = JOget("rows")toString();
//再次将rows对象转化为 JSONObject对象
JSONArray JO1 = (JSONArray) JSONValueparse(rows);
outprint(JO1size());
outprint("<br>");
JSONObject JO2 = (JSONObject)JO1get(0);
outprint("sysPerson:<font color=red>" + JO2get("sysPerson") + "</font>");
outprint("<br>");
outprint("sysDepartment:<font color=red>" + JO2get("sysDepartment") + "</font>");
outprint("<br>");
//再次获取
outprint("personName:<font color=red>" + ((JSONObject)JO2get("sysPerson"))get("personName") + "</font>");
outprint("<br>");
outprint("deptName:<font color=red>" + ((JSONObject)JO2get("sysDepartment"))get("deptName") + "</font>");
outprint("<br>");
//===================================
// 备注 信息
// JSONObject 可以转化为 {key:value}形式的 JSON对象,该对象继承自 HashMap ,所以可以使用HashMap的方法
// JSONArray 可以装维为 [object,object,……] 形式的数据对象,该对象继承自ArrayList,
// 灵活运用,可基本满足 需求。
//}
%>
</html>
你需要 下载 json_simple-11-allzip文件,网上搜索。
处理后如下:
以上就是关于java怎么得到json中的数据全部的内容,包括:java怎么得到json中的数据、json中怎么取出对象的属性值啊、java怎么取json数据的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)