java怎么得到json中的数据

java怎么得到json中的数据,第1张

如果不是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数据的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9768323.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存