導航:首頁 > 編程語言 > 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解析數組對象相關的資料

熱點內容
java將string轉為json 瀏覽:291
ppt2013製作exe文件 瀏覽:80
linux文件只讀不能復制 瀏覽:597
開關代碼 瀏覽:91
word繪圖板 瀏覽:359
蘋果minecraftpe注冊 瀏覽:775
ps怎麼存儲文件卡 瀏覽:728
微信清除緩存圖片恢復 瀏覽:305
安卓app會閃退怎麼解決 瀏覽:429
哪些app背單詞是免費的 瀏覽:889
cf擊殺圖標放哪個文件夾 瀏覽:208
為什麼我的爐石不能查看完整數據 瀏覽:179
蘋果7音量按鍵不回彈 瀏覽:296
u盤兩個系統可以放一個文件夾嗎 瀏覽:538
linuxshell變數累加 瀏覽:386
win10控制面板怎麼看 瀏覽:574
如何編程換裝游戲程序 瀏覽:269
怎麼登錄沭陽縣民政局網站 瀏覽:451
iphone6降級ios7 瀏覽:92
怎麼隱藏三星應用程序圖標不見了 瀏覽:203

友情鏈接