首页技术json数组排序(json有没有顺序)

json数组排序(json有没有顺序)

编程之家2026-06-08991次浏览

大家好,关于json数组排序很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于json有没有顺序的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

json数组排序(json有没有顺序)

怎样使用JS实现json对象数组按对象属性排序

这次给大家带来怎样使用JS实现json对象数组按对象属性排序,使用JS实现json对象数组按对象属性排序的注意事项有哪些,下面就是实战案例,一起来看一下。

在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json数据,需要我们根据json中某一项进行数组的排序。

例如返回的数据结构大概是这样:

{

result:[

{id:1,name:'中国银行'},

json数组排序(json有没有顺序)

{id:3,name:'北京银行'},

{id:2,name:'河北银行'},

{id:10,name:'保定银行'},

{id:7,name:'涞水银行'}

]

}现在我们根据业务需要,要根据id的大小进行排序,按照id小的json到id大的json顺序重新排列数组的顺序

json数组排序(json有没有顺序)

在js中添加排序的方法:

这里使用JavaScript sort()方法,首先解释下这个sort的方法

语法:arrayObject.sort(sortby)

sortby:可选,规定排序顺序。必须是函数。

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a和 b,其返回值如下:

若 a小于 b,在排序后的数组中 a应该出现在 b之前,则返回一个小于 0的值。

若 a等于 b,则返回 0。

若 a大于 b,则返回一个大于 0的值。

下面开始使用sort(sortby)来进行这个排序,并打印到控制台:

function sortId(a,b){

return a.id-b.id

}

result.sort(sortId);

console.log(result);完整测试示例代码:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>www.gxlcms.com json数组排序</title>

</head>

<body>

<script>

var result= [

{id:1,name:'中国银行'},

{id:3,name:'北京银行'},

{id:2,name:'河北银行'},

{id:10,name:'保定银行'},

{id:7,name:'涞水银行'}

]

function sortId(a,b){

return a.id-b.id

}

result.sort(sortId);

console.log(result);

</script>

</body>

</html>然后查看控制台,排序成功:

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

vuex入门教学步奏详解

怎样对vuex进阶使用

使用vue-admin-template优化步骤详解

Java数组排序 几种排序方法详细一点

JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。

快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。

冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来。

选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组。

插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。下面我就将他们的实现方法一一详解供大家参考。

<1>利用Arrays带有的排序方法快速排序

publicclassTest2{

publicstaticvoidmain(String[]args){

int[]a={5,4,2,4,9,1};

Arrays.sort(a);//进行排序

for(inti:a){

System.out.print(i);

}

}

}<2>冒泡排序算法

publicstaticint[]bubbleSort(int[]args){//冒泡排序算法

for(inti=0;i<args.length-1;i++){

for(intj=i+1;j<args.length;j++){

if(args[i]>args[j]){

inttemp=args[i];

args[i]=args[j];

args[j]=temp;

}

}

}

returnargs;

}<3>选择排序算法

publicstaticint[]selectSort(int[]args){//选择排序算法

for(inti=0;i<args.length-1;i++){

intmin=i;

for(intj=i+1;j<args.length;j++){

if(args[min]>args[j]){

min=j;

}

}

if(min!=i){

inttemp=args[i];

args[i]=args[min];

args[min]=temp;

}

}

returnargs;

}<4>插入排序算法

publicstaticint[]insertSort(int[]args){//插入排序算法

for(inti=1;i<args.length;i++){

for(intj=i;j>0;j--){

if(args[j]<args[j-1]){

inttemp=args[j-1];

args[j-1]=args[j];

args[j]=temp;

}elsebreak;

}

}

returnargs;

}

$.ajax()怎样从服务器获取json数据

这次给大家带来$.ajax()怎样从服务器获取json数据,$.ajax()怎样从服务器获取json数据的注意事项有哪些,下面就是实战案例,一起来看一下。

下面小编就为大家分享一篇基于$.ajax()方法从服务器获取json数据的几种方式总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

一.什么是json

json是一种取代xml的数据结构,和xml相比,它更小巧但描述能力却很强,网络传输数据使用流量更少,速度更快。

json就是一串字符串,使用下面的符号标注。

{键值对}: json对象

[{},{},{}]:json数组

"":双引号内是属性或值

::冒号前为键,后为值(这个值可以是基本数据类型的值,也可以是数组或对象),所以{"age": 18}可以理解为是一个包含age为18的json对象,而[{"age": 18},{"age": 20}]就表示包含两个对象的json数组。也可以使用{"age":[18,20]}来简化上面的json数组,这是一个拥有一个age数组的对象。

二.$.ajax()方法中dataType属性的取值

$.ajax()方法中dataType属性要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText【在第三部分解释】,并作为回调函数参数传递。可用的类型如下:

xml:返回XML文档,可用JQuery处理。

html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。

script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。

json:返回JSON数据。

jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。

三.Mime数据类型及response的setContentType()方法

什么是MIME类型?在把输出结果传送到浏览器上的时候,浏览器必须启动适当的应用程序来处理这个输出文档。这可以通过多种类型MIME(多功能网际邮件扩充协议)来完成。在HTTP中,MIME类型被定义在Content-Type header中。

例如,架设你要传送一个Microsoft Excel文件到客户端。那么这时的MIME类型就是“application/vnd.ms-excel”。在大多数实际情况中,这个文件然后将传送给 Execl来处理(假设我们设定Execl为处理特殊MIME类型的应用程序)。在Java中,设定MIME类型的方法是通过Response对象的ContentType属性。比如常用:response.setContentType("text/html;charset=UTF-8")进行设置。

最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型。

每个MIME类型由两部分组成,前面是数据的大类别,例如文本text、图象image等,后面定义具体的种类。

常见的MIME类型:

超文本标记语言文本.html,.html text/html

普通文本.txt text/plain

RTF文本.rtf application/rtf

GIF图形.gif image/gif

JPEG图形.ipeg,.jpg image/jpeg

au声音文件.au audio/basic

MIDI音乐文件 mid,.midi audio/midi,audio/x-midi

RealAudio音乐文件.ra,.ram audio/x-pn-realaudio

MPEG文件.mpg,.mpeg video/mpeg

AVI文件.avi video/x-msvideo

GZIP文件.gz application/x-gzip

TAR文件.tar application/x-tar

客户程序从服务器上接收数据的时候,它只是从服务器接受数据流,并不了解文档的名字,因此服务器必须使用附加信息来告诉客户程序数据的MIME类型。

服务器在发送真正的数据之前,就要先发送标志数据的MIME类型的信息,这个信息使用Content-type关键字进行定义,例如对于HTML文档,服务器将首先发送以下两行MIME标识信息,这个标识并不是真正的数据文件的一部分。

Content-type: text/html

注意,第二行为一个空行,这是必须的,使用这个空行的目的是将MIME信息与真正的数据内容分隔开。

如前面所说,在Java中,设定MIME类型的方法是通过Response对象的ContentType属性,设置的方法是使用response.setContentType(MIME)语句,response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。

Tomcat的安装目录\conf\web.xml中就定义了大量MIME类型,可以参考。比如可以设置:

response.setContentType("text/html; charset=utf-8"); html

response.setContentType("text/plain; charset=utf-8");文本

application/json json数据

这个方法设置发送到客户端的响应的内容类型,此时响应还没有提交。给出的内容类型可以包括字符编码说明,例如:text/html;charset=UTF-8。如果该方法在getWriter()方法被调用之前调用,那么响应的字符编码将仅从给出的内容类型中设置。该方法如果在getWriter()方法被调用之后或者在被提交之后调用,将不会设置响应的字符编码,在使用http协议的情况中,该方法设置 Content-type实体报头。

四.使用$.ajax()方法获取json数据的三种方式

dataType参数的配置决定了jquery如何帮助我们自动解析服务器返回的数据,有几种方式可以获取后台返回的json字符串并解析为json对象,下面是Java为例解释,下面三中方式的结果都是图一所示,项目运行在内网,无法截图,只能拍照,见谅。

1、$.ajax()参数中不设置dataType,后台response也不设置返回类型,则默认会以普通文本处理【response.setContentType("text/html;charset=utf-8");也是作为文本处理】,js中需要手动使用eval()或$.parseJSON()等方法将返回的字符串转换为json对象使用。

//Java代码:后台获取单个数控定位器的历史表格的数据

public void getHistorySingleData() throws IOException{

HttpServletRequest request= ServletActionContext.getRequest();

HttpServletResponse response= ServletActionContext.getResponse();

response.setHeader("Content-type","text/html;charset=UTF-8");

response.setContentType("text/html;charset=utf-8");

String deviceName= request.getParameter("deviceName");

String startDate= request.getParameter("startDate");

String endDate= request.getParameter("endDate");

SingleHistoryData[] singleHistoryData= chartService.getHistorySingleData(deviceName,startDate, endDate);

System.out.println(singleHistoryData.length);

System.out.println(JSONArray.fromObject(singleHistoryData).toString());//打印:[{"time":"2016-11-11 10:00:00","state":"运行","ball":"锁紧",....},{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",....},{},{}....]查到几条singleHistoryData对象就打印几个对象的信息{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",....}

response.getWriter().print(JSONArray.fromObject(singleHistoryData).toString());

}

/*js代码:选择查询某一时间段的数据,点击查询之后进行显示*/

$("#search").click(function(){

var data1= [];

var n;

var deviceName=$("body").attr("id");

var startDate=$("#startDate").val();

var endDate=$("#endDate").val();

$.ajax({

url:"/avvii/chart/getHistorySingleData",

type:"post",

data:{

"deviceName":deviceName,

"startDate": startDate,

"endDate": endDate

},

success: function(data){

alert(data);//---->弹出[{"time":"2016-11-11 10:00:00","state":"运行","ball":"锁紧",....},{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",....},{},{}....],后台传过来几条singleHistoryData对象就打印几个对象的信息{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",....}

alert(Object.prototype.toString.call(data));//--->弹出[object String],说明获取的是String类型的数据

var JsonObjs= eval("("+ data+")");//或者:var JsonObjs=$.parseJSON(data);

alert(JsonObjs);//alert(JsonObjs);---->弹出[object Object],[object Object],[object Object][object Object],[object Object],[object Object]??后台传过来几条singleHistoryData对象就打印几个[object Object]

n=JsonObjs.length;

if(n==0){

alert("您选择的时间段无数据,请重新查询");

}

for(var i= 0; i< JsonObjs.length; i++){

var name= JsonObjs[i]['time'];//针对每一条数据:JsonObjs[i],或者:JsonObjs[i].time

var state= JsonObjs[i]['state'];

var ball= JsonObjs[i]['ball'];

var xd= JsonObjs[i]['xd'];

var yd= JsonObjs[i]['yd'];

var zd= JsonObjs[i]['zd'];

var xf= JsonObjs[i]['xf'];

var yf= JsonObjs[i]['yf'];

var zf= JsonObjs[i]['zf'];

data1[i]={name:name,state:state,ball:ball,xd:xd,yd:yd,zd:zd,xf:xf,yf:yf,zf:zf};//个数与下面表头对应起来就可以了,至于叫什么名字并不影响控件的使用

}

if(JsonObjs.length!= 10){

for(var j=0;j<(10-((JsonObjs.length)%10));j++){//补全最后一页的空白行,使表格的长度保持不变

data1[j+JsonObjs.length]={name:"",state:"",ball:"",xd:"",yd:"",zd:"",xf:"",yf:"",zf:""};

}

}

var userOptions={

"id":"kingTable",//必须表格id

"head":["时间","运行状态","球头状态","X向位置/mm","Y向位置/mm","Z向位置/mm","X向承载力/Kg","Y向承载力/Kg","Z向承载力/Kg"],//必须 thead表头

"body":data1,//必须 tbody后台返回的数据展示

"foot":true,// true/false是否显示tfoot---默认false

"displayNum": 10,//必须默认 10每页显示行数

"groupDataNum":6,//可选默认 10组数

sort:false,//点击表头是否排序 true/false---默认false

search:false,//默认为false没有搜索

lang:{

gopageButtonSearchText:"搜索"

}

}

var cs= new KingTable(null,userOptions);

}

});

});2、$.ajax()参数中设置dataType="json",则jquery会自动将返回的字符串转化为json对象。后台可以设置为:【推荐】response.setContentType("text/html;charset=utf-8");或者response.setContentType("application/json;charset=utf-8");

//Java代码:后台获取单个数控定位器的历史表格的数据

public void getHistorySingleData() throws IOException{

HttpServletRequest request= ServletActionContext.getRequest();

HttpServletResponse response= ServletActionContext.getResponse();

response.setHeader("Content-type","text/html;charset=UTF-8");

response.setContentType("text/html;charset=utf-8");

String deviceName= request.getParameter("deviceName");

String startDate= request.getParameter("startDate");

String endDate= request.getParameter("endDate");

SingleHistoryData[] singleHistoryData= chartService.getHistorySingleData(deviceName,startDate, endDate);

System.out.println(singleHistoryData.length);

System.out.println(JSONArray.fromObject(singleHistoryData).toString());//打印:[{"time":"2016-11-11 10:00:00","state":"运行","ball":"锁紧",....},{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",....},{},{}....]查到几条singleHistoryData对象就打印几个对象的信息{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",....}

response.getWriter().print(JSONArray.fromObject(singleHistoryData).toString());

}/*js代码:页面首次加载时,显示规定时间段的数据*/

var data1= [];

var deviceName=$("body").attr("id");

var startDate=$("#startDate").val("2000-01-01 00:00:00");

var endDate=$("#endDate").val("2018-01-01 00:00:00");

$.ajax({

url:"/avvii/chart/getHistorySingleData",

type:"post",

data:{

"deviceName":deviceName,

"startDate":"2000-01-01 00:00:00",

"endDate":"2018-01-01 00:00:00"

},

dataType:"json",

success: function(data){

alert(data);//---->弹出[object Object],[object Object],[object Object][object Object],[object Object],[object Object]??后台传过来几条sing

OK,本文到此结束,希望对大家有所帮助。

vlookup两个条件匹配 vlookup一对多匹配dnf魔皇觉醒 dnf觉醒