valuestring); 可以使用sscanf来读取。一个例子: 获取json数组里的数据 获取json数组里的数据 获取json数组里的数据 获取json数组里的数据 获取json数组里的数据 获取json数组里的数据 if(NULL == pSub) #include int main(void) { char str[] = "{“”:10,“bbb”"/>

获取json数组里的数据 获取json数组里的数据

2025-05-05 20:40 - 立有生活网

怎么用C语言获取JSON中的数据?

}printf("obj_1 : %sn", pSub->valuestring);

可以使用sscanf来读取。一个例子:

获取json数组里的数据 获取json数组里的数据获取json数组里的数据 获取json数组里的数据


获取json数组里的数据 获取json数组里的数据


获取json数组里的数据 获取json数组里的数据


if(NULL == pSub)

#include

int main(void) {

char str[] = "{“”:10,“bbb”:20}";

int a, b;

printf("a = %d, b = %d

", a, b);

return 0;

}注意:上面和bbb使用的是中文的引号。

1、可以使用sscanf来读取。一个例子:

#include

int main(void) {

char str[] = "{“”:10,“bbb”:20}";

int a, b;

printf("a = %d, b = %d

", a, b);

return 0;

}2、JSON(JaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Ja, JaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

以下简单介绍用CJSON的思路及实现:

1)创建json,从json中获取数据。

#nclude

#include "cJSON.h"

char makeJson()

{cJSON pJsonRoot = NULL;

if(NULL == pJsonRoot)

{//error happend here

return NULL;

}cJSON_AddStringToObject(pJsonRoot, "hello", "hello world");

cJSON_AddNumberToObject(pJsonRoot, "number", 10010);

cJSON pSubJson = NULL;

pSubJson = cJSON_CreateObject();

if(NULL == pSubJson)

{// create object faild, exit

cJSON_Delete(pJsonRoot);

return NULL;

}cJSON_AddStringToObject(pSubJson, "subjsonobj", "a sub json string");

cJSON_AddItemToObject(pJsonRoot, "subobj", pSubJson);

char p = cJSON_Print(pJsonRoot);

// else use :

// char p = cJSON_PrintUnformatted(pJsonRoot);

String endDate = request.getParameter("endDate");if(NULL == p)

{//convert json list to string faild, exit

//because sub json pSubJson han been add to pJsonRoot, so just delete pJsonRoot, if you also delete pSubJson, it will coredump, and error is : double free

cJSON_Delete(pJsonRoot);

return NULL;

cJSON_Delete(pJsonRoot);

return p;

}void parseJson(char pMsg)

{if(NULL == pMsg)

{return;

}cJSON pJson = cJSON_Parse(pMsg);

if(NULL == pJson)

{// parse faild, return

}// get string from json

cJSON pSub = cJSON_GetObjectItem(pJson, "hello");

// get number from json

pSub = cJSON_GetObjectItem(pJson, "number");

{//get number from json faild

}printf("obj_2 : %dn", pSub->valueint);

pSub = cJSON_GetObjectItem(pJson, "bool");

{// get bool from json faild

}printf("obj_3 : %dn", pSub->valueint);

pSub = cJSON_GetObjectItem(pJson, "subobj");

{// get sub object faild

}cJSON pSubSub = cJSON_GetObjectItem(pSub, "subjsonobj");

if(NULL == pSubSub)

{// get object from subject object faild

}printf("sub_obj_1 : %sn", pSubSub->valuestring);

}int main()

if(NULL == p)

{return 0;

}printf("%sn", p);

free(p);//这里不要忘记释放内存,cJSON_Print()函数或者cJSON_PrintUnformatted()产生的内存,使用free(char )进行释放

return 0;

}2)创建json数组和解析json数组

{cJSON root = cJSON_CreateArray();

if(NULL == root)

{printf("create json array faildn");

return NULL;

}int i = 0;

for(i = 0; i < iSize; i++)

{cJSON_AddNumberToObject(root, "hehe", i);

}char out = cJSON_Print(root);

cJSON_Delete(root);

return out;

}//解析刚刚的CJSON数组

{if(NULL == pJson)

{return ;

if((root = cJSON_Parse(pJson)) == NULL)

{return ;

}int iSize = cJSON_GetArraySize(root);

for(int iCnt = 0; iCnt < iSize; iCnt++)

{cJSON pSub = cJSON_GetArrayItem(root, iCnt);

}int iValue = pSub->valueint;

}cJSON_Delete(root);

return;

}

如何使用iOS SDK获取和解析JSON数据

}#pragma mark - tableView

JSON 一般是从网络接口中请求的一段数据吧.首先要向发送一个请求,得到一段JSON,然后解析一下就行了.用到ASIHTTPRequest和SBJSON两个第三方的开源类库. NSURL =

"devName":devName,

接下来 看下工程目录吧,其实并没有必要,直接建立一个工程就行

char makeArray(int iSize)

工程目录中有个 Notes.json 文件,该文件就是 要解析的json数据了

Ok ,以上准备完毕,就开始编码了,在此之前故事版的内容 就和我上篇博客文章 IOS 解析xml 故事版 是一样配置的,这里就不在啰嗦了 ,首先看下 chonViewController.h文件,代码如下:

//

// chonViewController.h

// TestJson

//

// Copyright (c) 2014年 choni. All rights reserved.

//

#import

@intece chonViewController : UITableViewController

//保存数据列表

@property(nonatomic,strong) NSMutableArray listData;

@end

[objc] view plaincopy在CODE上查看代码片派生到我的代码片

//

// chonViewController.m

// TestJson

//

// Copyright (c) 2014年 choni. All rights reserved.

//

#import "chonViewController.h"

@intece chonViewController ()

@end

@implementation chonViewController

- (void)viewDidLoad

{[super viewDidLoad];

NSString path = [[NSBundle mainBundle]pathForResource:@"Notes" ofType:@"json" ];

NSData jsonData = [[NSData alloc] initWithContentsOfFile:path];

NSError error ;

id jsonObj = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];

if (!jsonObj || error) {

NSLog(@"JSON解析失败");

}self.listData = [jsonObj objectForKey:@"Record"];

-(NSInteger)numberOfSectionsInTableView:(UITableView )tableView{

return 1;

}-(NSInteger)tableView:(UITableView )tableView numberOfRowsInSection:(NSInteger)section{

return self.listData.count;

}- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath )indexPath{

UITableViewCell cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

NSMutableDictionary dict = self.listData[indexPath.row];

cell.textLabel.text = [dict objectForKey:@"Content"];

cell.detailTextLabel.text = [dict objectForKey:@"CDate"];

return cell ;

}- (void)didReceiveMemoryWarning

{[super didReceiveMemoryWarning];

}@end

Ok , 现在就可以编译运行的程序了 ,但是有个主意的地方 :

1.因为使用 NSJSONSerialization 实现json解码,要确定你得项目使用IOS 5 SDK 才可以

2. 其他的就没有什么了,介绍下NSJSONSerialization的类方法吧

1)NSJSONReadingMutableContaines ,指定解析返回的是可变的数组或字典 ,这个方法还是比较使用的,因为如果json数据需要改,不用管撒

2)NSJSONReadingMutableLees ,指定叶是可变的字符串

3) NSJSONReadingAllowFragments , 指定可以部署数组或字典

json数组从数据库获取

var obj = eval('(' + json + ')'); 或其他工具把json字符串转换为js对象 ,然后obj.id 这样访问

直接后台查询数据库,把结果2,11,3,5,66,33,13,65拼接成这种字符串传到前台,前台把js代码改写一下:

ok了。

var obj = {

text: '油 耗',

x: -20 //center

},

subtitle: {

text: 'Oil Wear',

x: -20

},

xAxis: {

categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',

'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

},

yAxis: {

text: 'OilWear (L)'

},

plotLines: [{

value: 0,

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

color: '#808080'

}]

},

tooltip: {

valueSuffix: 'L'

},

legend: {

layout: 'vertical',

align: 'right',

verticalAlign: 'middle',

borderWidth: 0

},

series: [{

name: '油耗' //这里去掉逗号

//这里不填写data

}]

});

};

//填充数据

obj.series.data=$.makeArray(result); //result是后台传来的字符串:2,11,3,5,66,33,13,65

//渲染图形

$('#container').highcharts(obj);

Jmeter 解析json文件(多条件获取数组中某个的值)

TAR文件 .tar application/x-tar

想要获取claimLabors下claimEstimateItemName="前保险杠骨架"且operationType= "03"的partNo。

分析:

1、jmeter中要想获取到claimLabors下claimEstimateItemName="前保险杠骨架"且operationType= "03"的partNo值,必须要解析该json文件。所以需要在beanshell中使用第三方jar包,则先要在idea中新建工程jmeterTool

这里提供两种方法获取partNo的值。

方法getJsonVal得到一个list返回值,pJsonRoot = cJSON_CreateObject();因为是某一个具体的值,所以直接使用substring截取[]内的内容即可。

方法二:通过jsonpath获取partNo所属数组的整个,再通过map获取partNo的值。

方法getJsonNode得到一个list对象,因为是list里只有一个对象,所以使用list.get(0)获取到map,再通过map.get("任意字段名称")即可获取对应的值。

上述main方法中的测试,是为了方便后续打jar包。

这里解析json,用到json-path包,所以在工程中需要导入该包:

3、将上述工程打成jar包。

打完包后,进入到包所在的路径下,结构如下:

如果不是上述内容,需要修改一下(将工程的META-INF目录下MANIFEST.MF文件中的内容过来即可)。否则cmd测试时会提示:没有主清单..

4、将打的包放到jmeter安装目录的libext文件夹下

5、打开jmeter,在对应脚本的beanshell中引入该包中的JsonUt常见的MIME类型:il类并调用

怎么取出json数组里面每一组的其中一个值?

void parseArra使用jmeter做接口测试时,经常会要获取json文件中数组中某个相同的值。如下述json文件y(char pJson)

function ajax(,succ) {

var aj=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP")

aj.open("get", , true)

aj.send();

aj.onreadystatechange = function() {

if(aj.r// get bool from jsoneadyState == 4&&aj.status==200&&succ) {

succ(aj.responseText)

}}

}//上面是一个ajax方法。下面是使用。

ajax(,tion(res){

console.log(res)

})

//是json文件的路径,res是获取到后的结果,结果是一个数组。在控制台你自己去看,该怎么提出来。

$.ajax()方法怎样从里获取json数据

for(var i in models){

这次给大家带来$.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将自动根据包mime信息返回responseXML或responseText【在第三部分解释】,并作为回调函数参数传递。可用的类型如下:

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

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

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

json:返回JSON数据。

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

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

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

例 如,架设你要传送一个Microsoft

Excel文件到客户端。那么这时的MIME类型就是“application/vnd.ms-excel”。在大多数实际情况中,这个文件然后将传送给

Execl来处理(设我们设定Execl为处理特殊MIME类型的应用程序)。在Ja中,设定MIME类型的方法是通过Response对象的ContentType属性。比如常用:response.setContentType("text/html;charset=UTF-8")进行设置。

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

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

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

普通文本 .txt text/plain

RTF文本 .rtf application/rtf

GIF图形 .gi}cJSON root = NULL;f 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文件 .i video/x-msvideo

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

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

Content-type: text/html

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

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

Tomcat的安装目录confweb.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()方法被调用之后或者在被提交之后调用,将不会设置响应的字符编码,在使用协议的情况中,该方法设置

Content-type实体报头。

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

dataType参数的配置决定了jquery如何帮助我们自动解析返回的数据,有几种方式可以获取后台返回的json字符串并解析为json对象,下面是Ja为例解释,下面三中方式的结果

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

//Ja代码:后台获取单个数控的历史表格的数据

public void getHistorySingleData() throws IOException{

HttpServletRequest request = ServletActionContext.getRequest();

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

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

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

String startDate= rif(NULL == pSub)equest.getParameter("startDate");

SingleHistoryData[] singleHistoryData = chartServ.getHistorySingleData(devName,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":"锁紧",....}

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

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

var data1 = [];

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

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

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

$.ajax({

:"/vii/chart/getHistorySingleData",

type:"t",

data:{

"startDate": startDate,

"endDate": endDate

},

success: function (data) {

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 后台返回的数据展示

"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");

//Ja代码:后台获取单个数控的历史表格的数据

public void getHistorySingleData() throws IOException{

HttpServletRequest request = ServletActionContext.getRequest();

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

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

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

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

SingleHistoryData[] singleHistoryData = chartServ.getHistorySingleData(devName,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":"锁紧",....}

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

var data1 = [];

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

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

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

$.ajax({

:"/vii/chart/getHistorySingleData",

type:"t",

data:{

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

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

},

data

php提取json数组里面的值怎么提?

response.getWriter().print(JSONArray.fromObject(singleHwrite(hd,str,strlen(str));istoryData).toString());

json_decode需要是UTF8编码得,你检查下file_get_content下来得内容是不是gbk得,或者在decode前使用iconv把内容字符转下utf8的,如果还是解析不出来得话,json_get_erroer有这么个函数,可以去获取下解析失败得原因

与之对应的 chonViewController.m文件 代码如下:

js如何获取ajax返回的json的数据

"; html += json_to_format_string(obj[name],deep+1); }else{ html += blank_string + name +": "+ obj[name]+"

JSONArray json = JSONArray.fromObject(models); //list数据转json

response.getWriter().println(json);//传到前台

//ajax

success: function(data){

var models = eval("("+data+")");

var rows="";

rows =rows + "var n;"+

""+models[i].statDate+parseJson(p);""+

""+models[i].endDate+""+

""+models[i].name+""+

"" ;

}$("#show_table").append(rows);//添加到table

PS:这是Servlet的写法

ajax不是有个回调函数么?里面的data参数,就是返回值

js怎样遍历json数组或对象并读取相应的数据?

500

看这样一段函数定义的代码就明白了function json_to_format_string(obj,deep){ var html = ""; var blank_string = ""; for (var i = 0; i < deep; i++) { blank_string += " "; }; for(var name in obj){ if (typeof(obj[name])=="object") { html += blank_string + name +": "+ "

// Created by choni on 14-5-16.

"; }HttpServletResponse response = ServletActionContext.getResponse(); } return html;}

2017年卫生资格考试成绩查询(2017年卫生专业技

大家好我是小篇,2017年卫生资格考试成绩查询,关于2017年卫生专业技术考试很多人还不知道,那么现在让我们一起来看看吧! 2017年卫生资格考试成绩查询(2017年卫生专业技术考试) 2017年卫生资格···

sleep是商标吗_sleepsheep是什么牌子

aisleep是什么 品牌 sleep是商标吗_sleepsheep是什么牌子 sleep是商标吗_sleepsheep是什么牌子 aisleep睡眠博士是专为人打造的真正的天然、绿色的高科技安眠体系品牌。 AiSleep睡眠博士不仅是科学睡眠的代表···

锁定我的幸福_我锁定你了

指纹锁的广告语 幸福是有吃有喝,并和大家分享快乐。 指纹锁的广告语 锁定我的幸福_我锁定你了 锁定我的幸福_我锁定你了 在我们平凡的日常里,大家都看到过许多经典的广告语吧,那么问题来···