json小例子
JSON详解

JSON释义:Json(JavaScript Object Notation)是一种轻量级的数据交换格式。
它基于JavaScript (Standard ECMA -262 3rd Edition-December 1999)的一个子集。
Json采用完全独立于语言的文本格式,但是也使用了类似C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Pert、Python等)。
这些特性使JSON成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快)一、JSON语法1.1 JSON语法规则JSON语法是JavaScript对象表示语法的子集。
●数据在名称/值对中●数据由逗号分隔●花括号保存对象●方括号保存数组1.2 JSON名称/值对JSON数据的书写格式是:名称/值对名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:“firstName”:”John”这很容易理解,等价于这条JavaScript语句:firstName=”John”1.3 JSON值JSON值可以是:●数字(整数或浮点数)●字符串(在双引号中)●逻辑值(true或false)●数组(在方括号中)●对象(在花括号中)●Null二、基础结构2.1 JSON结构有两种结构JSON简单说就是JavaScript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结果1.对象:对象在js中表示”{}”括起来的内容,数据结构为{key:value,key:value…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为对象key获取属性值,这个属性值的类型可以是数字、字符串、数组、对象几种。
2.数组:数组在js中是中括号”[]”括起来的内容,数据结构为[“java”,”javascript”,”vb”…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是数字,字符串,数组,对象几种。
wps 编写解析json格式的数据案例

wps 编写解析json格式的数据案例在数据处理和解析中,json 格式的数据成为了一种常见的数据格式。
它具有数据结构清晰、易于阅读和编写的特点,被广泛应用在 Web 开发、移动应用程序开发和数据交换等领域。
wps 作为一款功能强大的办公软件,也提供了对 json 数据进行解析和处理的功能,本文将通过一个案例,详细介绍如何利用 wps 对 json 格式的数据进行解析和处理。
1. 准备 json 数据我们准备一段简单的 json 数据作为例子,例如:```json{"name": "张三","age": 25,"gender": "男","address": {"city": "北京","street": "朝阳区"},"skills": ["Java", "Python", "C++"]}上面的 json 数据包含了一个人的基本信息,包括尊称、芳龄、性别、位置区域和技能等内容。
2. 创建wps文档打开 wps 文档,在空白处输入上面准备的 json 数据。
3. 解析 json 数据在 wps 中,可以利用内置的函数对 json 数据进行解析。
在本例中,我们可以使用 wps 中的 JSON.GET 函数来获取 json 数据中指定键对应的值,具体步骤如下:3.1 我们可以使用JSON.GET 函数获取尊称、芳龄和性别等基本信息,比如在单元格 A1 中输入以下公式:```=JSON.GET(A$1,"$.name")=JSON.GET(A$1,"$.age")=JSON.GET(A$1,"$.gender")```这样,单元格 A1 中就会显示 json 数据中相应键对应的值。
各种JSON格式数据

各种JSON格式数据⼀、数组中有多个对象,对象中的字段是数组[{"jingyesi": ["床前明⽉光","疑是地上霜","举头望明⽉","低头思故乡"]},{"youziyin": ["慈母⼿中线","游⼦⾝上⾐","临⾏密密缝","意恐迟迟归","谁⾔⼨草⼼","报得三春晖"]}]代码如下://1.声明数组string[] arry1 = { "床前明⽉光", "疑是地上霜","举头望明⽉","低头思故乡"};//2、声明对象var obj1 = new JObject();//3、把数组加⼊对象中的字段obj1.Add("jingyesi",JArray.FromObject(arry1));string[] arry2 = {"慈母⼿中线","游⼦⾝上⾐","临⾏密密缝","意恐迟迟归","谁⾔⼨草⼼","报得三春晖"};var obj2 = new JObject();obj2.Add("youziyin",JArray.FromObject(arry2));//4.声明ogject的集合,把两个对象加⼊进去List<object> data = new List<object>() { obj1,obj2};Console.WriteLine(JArray.FromObject(data));⼆、json数组中加⼊新项1、数值型数组JArray a = new JArray() {"1","2","3" };a.Add("4");Console.WriteLine(a);输出:["1","2","3","4"]如果要加⼊新的数值型数组⽐如加⼊b数组JArray b = new JArray() {"4","5","6" };可以遍历b,把⼀项⼀项加⼊aJArray a = new JArray() {"1","2","3" };JArray b = new JArray() { "4", "5", "6" };foreach (var s in b){a.Add(s);}Console.WriteLine(a);代码输出合并后的数组["1","2","3","4","5","6"]2、对象型数组string json = "[{\"Name\" : \"Jack\", \"Age\" : 34},{\"Name\" : \"Abel\",\"Age\":29}]"; var a = JArray.Parse(json);var user = new{Name = "Lucy",Age = 18};a.Add(JObject.FromObject(user));Console.WriteLine(a);输出:[{"Name": "Jack","Age": 34},{"Name": "Abel","Age": 29},{"Name": "Lucy","Age": 18}]。
ISuperObject处理多层Json样例

ISuperObject处理多层Json样例//----------例⼦1:监控中,多层Jsonjo: ISuperObject;JA_DEPT,JA_TYPE,JA_MAC:TSuperArray; //json数组SetLength(NewDeptInfo,0);jo := SO(WS_Data);//循环放到数据⾥⾯去,//-------------地区JA_DEPT:=jo.A['BelongDept'];SetLength(NewDeptInfo,JA_DEPT.Length);for i := 0to JA_DEPT.Length-1dobeginDEPT_ID:=JA_DEPT.O[i].I['BelongDeptId'];//------------- ⽹点(出票类型)JA_TYPE:=JA_DEPT.O[i].O['Dept'].AsArray;SetLength(NewDeptInfo[i].M_TYPE,JA_TYPE.Length);for j := 0to JA_TYPE.Length-1dobegin//---------- 机器列表JA_MAC:=JA_TYPE.O[j].O['MachineList'].AsArray;SetLength(NewDeptInfo[i].M_TYPE[j].MACHINE,JA_MAC.Length);NewDeptInfo[i].M_TYPE[j].TYPE_MAC_CNT:=JA_MAC.Length;for k := 0to JA_MAC.Length-1dobeginSTATUS:=JA_MAC.O[k].I['State'];NewDeptInfo[i].M_TYPE[j].MACHINE[k].MAC_NO:=JA_MAC.O[k].S['MacineNo'];NewDeptInfo[i].M_TYPE[j].MACHINE[k].MAC_STATUS:=STATUS;NewDeptInfo[i].M_TYPE[j].MACHINE[k].MAC_BALANCE:=JA_MAC.O[k].C['Balance'];NewDeptInfo[i].M_TYPE[j].MACHINE[k].MchineType:=JA_MAC.O[k].I['MchineType'];NewDeptInfo[i].M_TYPE[j].MACHINE[k].MAC_ErrorMsg:=JA_MAC.O[k].S['ErrorMsg'];case STATUS of1: Inc(NewDeptInfo[i].M_TYPE[j].TYPE_PRINT_CNT); //出票3: Inc(NewDeptInfo[i].M_TYPE[j].TYPE_CONVERT_CNT); //兑奖2: Inc(NewDeptInfo[i].M_TYPE[j].TYPE_ALARM_CNT); //报警0,4: Inc(NewDeptInfo[i].M_TYPE[j].TYPE_STANDBY_CNT); //待机end;NewDeptInfo[i].M_TYPE[j].TYPE_BALANCE:=NewDeptInfo[i].M_TYPE[j].TYPE_BALANCE+JA_MAC.O[k].C['Balance'];end;end;end;//---------------例⼦2procedure TfrmMonitorView.LoadLayout(jsonNode: ISuperObject);varnode: ISuperObject;a: TSuperArray;i: Integer;begininherited;trynode := jsonNode.O['ActiveVehicleList']; //这个对象是⼜名称的if (node <> nil) and (node.AsArray.Length > 0) then//判断对象和数组长度begina := node.AsArray;for i := 0to a.Length - 1doFLastActiveComms.Add(a[i].AsInteger);end;except on e: Exception doshowmessage(e.Message);end;end;//---------例⼦3 //--------------实现⽅式TACCResultEntity = recordAnalyzeAccOpenTime :string;AnalyzeAccCloseTime :string;ACOpenTime :string;ACCloseTime:string;end;SubList: TList<TACCResultEntity>;//--------------------procedure TLogisticsInfoEntity.FillByJson(jsonNode: ISuperobject);var ACCResultArray: TSuperArray;ACArray : TSuperArray;ACCResult : TACCResultEntity;i,j :Integer;begininherited;SENDCOMPANYADDRESS:= jsonNode.S['SENDCOMPANYADDRESS'];SENDCOMPANYUSER:= jsonNode.S['SENDCOMPANYUSER'];SENDCOMPANYUSERTEL:= jsonNode.S['SENDCOMPANYUSERTEL'];ACCResultArray :=jsonNode.A['ACCResultList']; //或者类似这样 jsonNode.O['ACCResultList'].AsArray; if ACCResultArray.Length <=0then Exit; //不是退出,是判断⼀下,以后修改SubList := TList<TACCResultEntity>.Create;for i := 0to ACCResultArray.Length-1dobeginACArray:=ACCResultArray.O[i].A['ACResultList'];if ACArray.Length <=0then Exit;for j := 0to ACArray.Length-1dobeginACCResult.AnalyzeAccOpenTime := ACCResultArray.O[i].S['AnalyzeAccOpenTime'];ACCResult.AnalyzeAccCloseTime := ACCResultArray.O[i].S['AnalyzeAccCloseTime'];ACCResult.ACOpenTime :=ACArray.O[j].S['ACOpenTime'];ACCResult.ACCloseTime:=ACArray.O[j].S['ACCloseTime'];SubList.Add(ACCResult);end;end;//例⼦3 json{"ACCResultList": [{"ACResultList": [{"ACOpenTime": "2015-12-22 10:15:16","ACCloseTime": "2015-12-22 11:16:16"},{"ACOpenTime": "2015-12-22 13:15:16","ACCloseTime": "2015-12-22 13:16:16"}],"AnalyzeAccOpenTime": "2015-12-229:00:00","AnalyzeAccCloseTime": "2015-12-2214:00:00"},{"ACResultList": [{"ACOpenTime": "2015-12-22 17:15:16","ACCloseTime": "2015-12-22 18:16:16"},{"ACOpenTime": "2015-12-22 18:25:16","ACCloseTime": "2015-12-22 19:16:16"}],"AnalyzeAccOpenTime": "2015-12-2217:00:00","AnalyzeAccCloseTime": "2015-12-2220:00:00"}],"AnalyzeCarStopStatusStartTime": "2015-12-229:00:00","AnalyzeCarStopStatusEndTime": "2015-12-2222:00:00","CommNo": "232321","AnalyzeCarSpeedLat": 2322112,"AnalyzeCarSpeedLon": 0}//---例⼦1Json格式{"BelongDept": [{"BelongDeptId": 0,"BelongDeptName": "深圳","Dept": [{"DeptId": 110,"DeptName": "⽹点⼀","IsFetchTicket": true,"LastUpdateTime": "/Date(1429585474316+0800)/","MachineList": [{"MacineNo": "1101","MchineType": 0,"Balance": 25.64,"State": 1,"ErrorMsg": "","ErrorState": 0,"LastGetTicketTime": "/Date(1429585474317+0800)/","TicketSleepTime": 0,"TodayAmount": 0,"TodaySaleCount": 0,"TodaySysAmount": 0,"TodaySysSaleCount": 0}],"State": 0,"TicketCount": 1100,"UnusualCount": 10},{"DeptId": 111,"DeptName": "⽹点⼆","IsFetchTicket": false,"LastUpdateTime": "/Date(1429585474317+0800)/","MachineList": [{"MacineNo": "1111","MchineType": 0,"Balance": 1,"State": 1,"ErrorMsg": "","ErrorState": 0,"LastGetTicketTime": "/Date(1429585474317+0800)/", "TicketSleepTime": 0,"TodayAmount": 0,"TodaySaleCount": 0,"TodaySysAmount": 0,"TodaySysSaleCount": 0}],"State": 0,"TicketCount": 1110,"UnusualCount": 11}]},{"BelongDeptId": 1,"BelongDeptName": "重庆","Dept": [{"DeptId": 122,"DeptName": "⽹点⼀","IsFetchTicket": true,"LastUpdateTime": "/Date(1429585474316+0800)/","MachineList": [{"MacineNo": "1221","MchineType": 0,"Balance": 5,"State": 0,"ErrorMsg": "","ErrorState": 0,"LastGetTicketTime": "/Date(1429585474317+0800)/", "TicketSleepTime": 0,"TodayAmount": 0,"TodaySaleCount": 0,"TodaySysAmount": 0,"TodaySysSaleCount": 0},....],"State": 0,"TicketCount": 1110,"UnusualCount": 11},{"DeptId": 123,"DeptName": "⽹点⼆","IsFetchTicket": true,"LastUpdateTime": "/Date(1429585474316+0800)/","MachineList": [{"MacineNo": "1231","MchineType": 0,"Balance": 5,"State": 1,"ErrorMsg": "","ErrorState": 0,"LastGetTicketTime": "/Date(1429585474317+0800)/", "TicketSleepTime": 0,"TodayAmount": 0,"TodaySaleCount": 0,"TodaySysAmount": 0,"TodaySysSaleCount": 0}],"State": 0,"TicketCount": 1110, "UnusualCount": 11 }]},....]}。
json基本语法

JSON基本语法什么是JSONJSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的方式来表示结构化数据。
JSON数据格式在Web开发中被广泛应用,特别是在前后端数据传输和存储过程中。
JSON语法规则JSON基本语法非常简单,它由以下几个部分组成:1. 数据类型JSON支持以下几种数据类型:•字符串(String):由双引号括起来的Unicode字符序列,例如:“hello world”。
•数字(Number):整数或浮点数,例如:100,3.14。
•布尔值(Boolean):true或false。
•数组(Array):由方括号括起来的有序值的列表,值之间用逗号分隔,例如:[1, 2, 3]。
•对象(Object):由花括号括起来的键值对的集合,键值对之间用逗号分隔,键和值之间用冒号分隔,例如:{“name”: “Alice”, “age”: 20}。
•空值(Null):null。
2. 键值对JSON中的对象是由一组键值对组成的。
键(key)必须是字符串,值(value)可以是任意JSON数据类型。
键和值之间用冒号分隔,键值对之间用逗号分隔。
例如:{"name": "Alice","age": 20,"isStudent": true}3. 嵌套JSON支持嵌套,即在一个JSON对象中可以包含另一个JSON对象或JSON数组。
例如:{"name": "Alice","address": {"city": "Beijing","street": "Main Street"},"friends": ["Bob","Charlie","David"]}4. 注释JSON不支持注释,不能在JSON数据中添加注释。
json数据 例子

json数据例子JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输。
它以键值对的形式组织数据,具有易读、易写的特点,同时也易于解析和生成。
下面是一些关于JSON 数据的示例,以帮助您更好地理解和使用JSON。
1. 简单的JSON对象示例:{"name": "张三","age": 25,"gender": "男"}这是一个包含名称、年龄和性别属性的JSON对象示例。
2. JSON数组示例:[{"name": "张三","age": 25,"gender": "男"},{"name": "李四","age": 30,"gender": "女"},{"name": "王五","age": 28,"gender": "男"}]这是一个包含多个JSON对象的数组示例,每个对象都表示一个人的信息。
3. 嵌套JSON对象示例:{"name": "张三","age": 25,"gender": "男","address": {"province": "北京","city": "北京","street": "朝阳区"}}这是一个包含嵌套JSON对象的示例,其中address属性又包含了province、city和street属性。
小码哥:MySQL 5.7 使用原生JSON类型的例子

MySQL 5.7 使用原生JSON类型的例子首先回顾一下JSON的语法规则:数据在键值对中,数据由逗号分隔,花括号保存对象,方括号保存数组。
按照最简单的形式,可以用下面的JSON表示:如何在MySQL中使用JSON类型:新建user表,设置lastlogininfo列为JSON类型。
向user表插入普通数据与json数据。
mysql会对插入的数据进行JSON格式检查,确保其符合JSON格式,若插的是不合法的数据,会出现Invalid JSON text错误。
也可以使用JSON_OBJECT()函数:查询name为'lucy'的最后登陆信息。
查询最后登陆时间在2015-10-02后的用户。
JSON数据使用->操作符,其表达式为:该json列->'.键′与JSONEXTRACT(json列,′.键')等效使用。
如果传入的不是一个有效的键,则返回Empty set。
该表达式可以用于SELECT查询列表,WHERE/HAVING , ORDER/GROUP BY中,但它不能用于设置值。
表达式:json列->'$.键'等价于:JSON_EXTRACT(json列, '$.键')比较JSON值采用两个级别。
第一级是基于JSON类型的比较。
如果类型不同,则取决于哪种类型具有更高的优先级。
如果是相同的JSON类型,则是第二级,使用该类型的规则来比较。
下面的列表显示了JSON类型的比较规则,从最高优先级到最低优先级。
显示在一行的类型则是具有相同的优先级。
使用JSON_TYPE()函数返回指定属性对应的类型名称:值得一提的是,可以通过虚拟列对JSON类型的指定属性进行快速查询。
创建虚拟列:使用时和普通类型的列查询是一样的:这只是一个简单的JSON类型例子,Mysql还提供了许多对JSON类型处理的函数,可以从MySQL的官方网站查看帮助文档:/doc/refman/5.7/en/json.html。
JSON常用方法

JSON常⽤⽅法JSON数据常⽤的数据处理⽅法:⼀、JSON对象和JSON字符串的转换JSON在数据传输过程中,JSON是以字符串的形式传递的,⽽JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。
例如:JSON字符串:var jsonStr ='{"name":"Liza", "password":"123"}' ;JSON对象:var jsonObj = {"name":"Liza", "password":"123"};1.JSON字符串转化JSON对象var jsonObject= jQuery.parseJSON(jsonstr);console.log(jsonObject)//{name:"Liza",password:"123"}2.JSON对象转化JSON字符串var jsonstr =JSON.stringify(jsonObject );console.log(jsonstr) //{"name":"Liza", "password":"123"}⼆、JSON的输出美化JSON.stringify(value[, replacer [, space]])将JSON转化为字符串可以⽤JSON.stringify() ⽅法,stringify还有个可选参数space,可以指定缩进⽤的空⽩字符串,⽤于美化输出(pretty-print);space参数是个数字,它代表有多少的空格;上限为10。
该值若⼩于1,则意味着没有空格;如果该参数没有提供(或者为null)将没有空格。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这里出现的booklist Booklist[i].title等,和action里的私 有成员完全一致。
完成!
我们可以看到
• 在服务器(struts2框架)支持下,在浏览器 (jquery)的支持下,json的使用让程序员 的工作变得轻松愉快,数据的转换工作, 框架已经替我们完成了,数据的显示工作, 由于jquery DOM的存在,变得简洁清爽
• 第一个例子,向服务器发送请求,数据在 json文件里
• 第二个例子,向服务器发送请求,数据由 服务器生成
第一个例子,向服务器请求json文件
1.在服务器端写一个json文件 2.在浏览器端写jquery代码,向服务器发送请 求,同时规定请求数据是json类型 3.在浏览器端将json数据显示出来
Json 的struts2 jar包
struts2-json-plugin-2.3.4.1.jar
• 把这个文件拷到lib文件夹下 • Struts2就可以支持json数据了!
打开jar包,里面有个strutsplugin.xml文件
<struts> <package name="json-default" extends="struts-default"> <result-types> <result-type name="json" class="org.apache.struts2.json.JSONResult"/> </result-types>
private List<book> booklist;
}
然后,配置struts.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "/dtds/struts-2.3.dtd"> <struts> <constant name="struts.i18n.encoding" value="gbk"/> <package name="getjson" extends="json-default" namespace="/"> <action name="getjson" class="org.myjson.action.JsonAction"> <result name="success" type="json"></result> </action> 这里要注意几个与众不同的地方 </package> 1.Action所在的package,它的extends一定要是刚才看到的 </struts> json-default
首先,在根目录下
• 建立一个叫books的文件夹 • 在books里面建一个叫book.json的文本文档
/books/book.json
{ "books": [ { "title":"A", "author":“zhangsan", "country":"China" }, { "title":"B", "author":"lisi", "country":"USA" }, { "title":"C", "author":"wangwu", "country":"China" } ] }
ackage org.myjson.action; import java.util.ArrayList; import java.util.List; import com.opensymphony.xwork2.ActionSupport; import org.myjson.entity.book;
• 当然可以! • 不光可以,用struts2来做,更加方便。
第二个例子:
• • • • • • • • • 导入struts2支持json的jar包 创建Action 创建对象 创建数组 把对象放到数组里 配置struts.xml文件 浏览器端发送json请求 Action将数据返回给浏览器 浏览器显示数据
实体类book,有3个私 有成员,分别对应json 的3个数据名称
}
接下来我们要创建一个action
public String execute() { booklist = new ArrayList<book>(); bk = new book(); bk.setAuthor("张三"); public class JsonAction extends ActionSupport { bk.setCountry("USA"); private book bk; 实例化了两个 bk.setTitle("A"); public book getBk() { book对象,添加 booklist.add(bk); return bk;} 到arraylist对象 bk = new book(); public void setBk(book bk) { booklist中去,然 bk.setAuthor("李四"); this.bk = bk;} 后,return success! bk.setCountry("China"); public List<book> getBooklist() { bk.setTitle("B"); return booklist;} booklist.add(bk); public void setBooklist(List<book> booklist) { return SUCCESS; this.booklist = booklist; } }
这个文件里有个叫做json-default的package,里面有个叫做json的result,
接下来我们就要用到它。
下面我们建一个实体类,用来描述 数组里的对象
package org.myjson.entity; public class book { private String title; private String author; private String country; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; }
2.和action的return success 对应的result,要加一个属性,其 值是json
最后,完成jsp页面
<script src="js/jquery-1.12.3.js"></script> <script> $(document).ready(function(){ $.ajax({ url:"getjson", type:"get", dataType:"json", error:function(){alert("文件加载失败!");}, success:function(json){ for(i=0;i<json.booklist.length;i++) { $("#"+i).html(json.booklist[i].title); $("#"+i+"a").html(json.booklist[i].author); } } }); }); </script>
<body> This is index page. <br> <table> <tr><td>title</td><td>author</td></tr> <tr><td id="0"></td><td id="0a"></td></tr> <tr><td id="1"></td><td id="1a"></td></tr> <tr><td id="2"></td><td id="2a"></td></tr> </table> </body>