导航:首页 > 编程语言 > cjson解析数组对象

cjson解析数组对象

发布时间:2024-08-12 05:56:42

A. 怎样用C#把jsON数据转换为list或数组

引用,在项目中引用
using System.ServiceModel.Web;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
==================
定一个跟Json一样的类
public class CJsonObj
{
//属性
}
你的Json是文件,就把这文件读到流里面来再转
string jsonText = System.IO..ReadAllText(Json文件); //这就读出了文件,并存成了string
List<CJsonObj> _Test = new List<CJsonObj>(); //建立list
//这个是关键对象DataContractJsonSerializer
DataContractJsonSerializer _Json = new DataContractJsonSerializer(_Test.GetType());
//转码,把string 转成byte[]数组
byte[] _Using = System.Text.Encoding.UTF8.GetBytes(_JsonText);
//开个流,把数组加进去
System.IO.MemoryStream _MemoryStream = new System.IO.MemoryStream(_Using);
_MemoryStream.Position = 0; //流从0开始
//就这句,读到List里了
_Test = (List<Test>)_Json.ReadObject(_MemoryStream);

//你的JSON文件格式必须与你定的类一致,你懂得

B. 用C语言解析JSON数据

http://www.json.org/
列出抄了袭一堆C语言的JSON库。

C:
JSON_checker.
YAJL.
js0n.
LibU.
json-c.
json-parser.
jsonsl.
WJElement.
M's JSON parser.
cJSON.
Jansson.
jsmn.
cson.
parson.
ujson4c.
nxjson.
frozen.

C. 如何生成和解析json格式数据

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript的一个子集。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript,
Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,json生成的数据量比XML 还要少一些,所以很多公司传输数据喜欢用JSON数据格式 。

1、下面通过一个简单的例子来说明JSON 的解析
String strJson = "{\"students\":[{\"name\":\"luci\",\"age\":23}, {\"name\":\"jack\",\"age\":25}, {\"name\":\"Kas\",\"age\":22}]}";
try {
JSONObject mBj = new JSONObject(strJson);//生成对象
JSONArray mJsonArray = (JSONArray) mBj.get("students");//取得数据数组
for (int i = 0; i < mJsonArray.length(); ++i) {
JSONObject mObject = (JSONObject) mJsonArray.get(i);
Log.d("log.d","name:" + mObject.getString("name") + "," + "age:"
+ mObject.getInt("age"));
}
} catch (JSONException e) {
e.printStackTrace();
}

json 数据解析小技巧,通过debug 方式查看对象数据格式。

2、json数据生成
try {
JSONObject mBj=new JSONObject();
JSONArray mJsonArray=new JSONArray();
mBj.put("students", mJsonArray);//存入主对象

JSONObject mJSONObject1=new JSONObject();
mJSONObject1.put("name", "luci");
mJSONObject1.put("age", 23);

mJsonArray.put(mJSONObject1);//存入数组对象

Log.d("log.d", mBj.toString());

} catch (JSONException e) {
e.printStackTrace();
}

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

用C语言获取JSON中的数据的方法是使用 CJSON。

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

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

#nclude <stdio.h>

#include "cJSON.h"

char * makeJson()

{

cJSON * pJsonRoot = NULL;


pJsonRoot = cJSON_CreateObject();

if(NULL == pJsonRoot)

{

//error happend here

return NULL;

}

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

cJSON_AddNumberToObject(pJsonRoot, "number", 10010);

cJSON_AddBoolToObject(pJsonRoot, "bool", 1);

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

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 coremp, and error is : double free

cJSON_Delete(pJsonRoot);

return NULL;

}

//free(p);

cJSON_Delete(pJsonRoot);

return p;

}

void parseJson(char * pMsg)

{

if(NULL == pMsg)

{

return;

}

cJSON * pJson = cJSON_Parse(pMsg);

if(NULL == pJson)

{

// parse faild, return

return ;

}

// get string from json

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

if(NULL == pSub)

{

//get object named "hello" faild

}

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

// get number from json

pSub = cJSON_GetObjectItem(pJson, "number");

if(NULL == pSub)

{

//get number from json faild

}

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

// get bool from json

pSub = cJSON_GetObjectItem(pJson, "bool");

if(NULL == pSub)

{

// get bool from json faild

}

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

// get sub object

pSub = cJSON_GetObjectItem(pJson, "subobj");

if(NULL == pSub)

{

// get sub object faild

}

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

if(NULL == pSubSub)

{

// get object from subject object faild

}

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

cJSON_Delete(pJson);

}


int main()

{

char * p = makeJson();

if(NULL == p)

{

return 0;

}

printf("%s ", p);

parseJson(p);

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

return 0;

}

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

//创建数组,数组值是另一个JSON的item,这里使用数字作为演示

char * makeArray(int iSize)

{

cJSON * root = cJSON_CreateArray();

if(NULL == root)

{

printf("create json array faild ");

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数组

void parseArray(char * pJson)

{

if(NULL == pJson)

{

return ;

}

cJSON * root = NULL;

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

if(NULL == pSub)

{

continue;

}

int iValue = pSub->valueint;

printf("value[%2d] : [%d] ", iCnt, iValue);

}

cJSON_Delete(root);

return;

}

E. C#解析json数组,查询是否有某个值得键。

你的json格式有点问题,应该是不完整且键名不能相同。

下面我写了个相同的程序,希望能符合你的要求,代码如下:

publicclassKeysInfo{

publicKeysInfo(){}

[JsonIgnore]
publicstringTest{get;set;}

publicMyKeys[]mykeys{get;set;}
}

publicclassMyKeys
{
publicstringkey0{get;set;}
publicstringkey1{get;set;}
publicstringkey2{get;set;}
publicstringkey3{get;set;}
publicstringkey4{get;set;}
publicstringkey5{get;set;}
publicstringkey6{get;set;}
publicstringkey7{get;set;}

}

classProgram
{
staticvoidMain(string[]args)
{
stringmyJson="{"Test":"2015","MyKeys":[{"key0":"a","key1":"b","key2":"c","key3":"d"},{"key4":"aa","key5":"bb","key6":"cc","key7":"dd"}]}";
//反序列化json对象
KeysInfodes=JsonConvert.DeserializeObject<KeysInfo>(myJson);

if(IsExist(des,"key4","aa"))Console.WriteLine("存在. ");
elseConsole.WriteLine("不存在. ");

Console.ReadKey(true);
}

publicstaticboolIsExist(KeysInfokeyInfo,stringkeyName,stringkeyValue)
{
for(inti=0;i<keyInfo.mykeys.Count();i++)
{
//反射KeysInfo类的属性以及值
foreach(System.Reflection.PropertyInfopiinkeyInfo.mykeys[i].GetType().GetProperties())
{
if(pi.Name==keyName&&(pi.GetValue(keyInfo.mykeys[i])!=null
&&pi.GetValue(keyInfo.mykeys[i]).ToString()==keyValue))
returntrue;//给定的键名与值存在于json对象
}
}
returnfalse;//给定的键名与值不存在于json对象
}
}

F. c#解析JSON的几种办法

对比





G. json是什么文件

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language,Standard ECMA-262 3rd Edition - December 1999的一个子集。

JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

JSON建构于两种结构,一是“名称/值”对的集合(Acollectionofname/valuepairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hashtable),有键列表(keyedlist),或者关联数组(associativearray)。

二是值的有序列表(Anorderedlistofvalues)。在大部分语言中,它被理解为数组(array)。

(7)cjson解析数组对象扩展阅读:

JSON简要历史

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。

JSON是Douglas Crockford在2001年开始推广使用的数据格式,在2005年-2006年正式成为主流的数据格式,雅虎和谷歌就在那时候开始广泛地使用JSON格式。

H. json是什么

JSON(JavaScriptObject Notation, JS 对象简谱来) 是一种轻量级的数据交源换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。简单来说:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。

(8)cjson解析数组对象扩展阅读

注意事项:

1,json的键值对的键部分,必须用双引号"包裹,单引号都不行(所以如果在键中出现了关键字,也被字符化了),而js中对象没有强制要求(所以在键中不允许出现关键字)。

2,json的键值对的值部分,不允许出现函数function,undefined,NaN,但是可以有null,js中对象的值中可以出现。

3,json数据结束后,不允许出现没有意义的逗号,如:{"name":"admin","age":18,},注意看数据结尾部分18的后面的逗号,不允许出现。

阅读全文

与cjson解析数组对象相关的资料

热点内容
win7如何修改用户密码 浏览:169
逆战辅助销售网站源码 浏览:100
陕西回收贴片机如何编程 浏览:948
以前鲍鱼网站里的小说怎么没了 浏览:267
matlab程序如何调试 浏览:915
ps工程文件怎么发 浏览:95
word文件如何批量插入盖章 浏览:548
jscheckbox 浏览:338
pics规则文件 浏览:644
如何从数据中找出问题和机会 浏览:668
写作投稿在哪个网站好 浏览:895
绝代双骄版本 浏览:380
手机app在哪里找的对象靠谱吗 浏览:919
win10文件默认显示ck方式 浏览:829
如何更改桌面文件图标 浏览:418
word2010如何去掉背景 浏览:632
adp文件如何打开 浏览:531
ug编程怎么导出零件 浏览:586
asp在线文件管理系统 浏览:468
tks文件如何分解 浏览:132

友情链接