cjson數組生產(cjson解析json數組)

本文目錄一覽:

怎麼用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 coredump, 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\n”, pSub-valuestring);

// get number from json

pSub = cJSON_GetObjectItem(pJson, “number”);

if(NULL == pSub)

{

//get number from json faild

}

printf(“obj_2 : %d\n”, pSub-valueint);

// get bool from json

pSub = cJSON_GetObjectItem(pJson, “bool”);

if(NULL == pSub)

{

// get bool from json faild

}

printf(“obj_3 : %d\n”, 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\n”, pSubSub-valuestring);

cJSON_Delete(pJson);

}

int main()

{

char * p = makeJson();

if(NULL == p)

{

return 0;

}

printf(“%s\n”, 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\n”);

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]\n”, iCnt, iValue);

}

cJSON_Delete(root);

return;

}

有兩種方法:

一是標準的輸出輸入方式 比如新建一個磁盤文件c:\a.txt, 將鍵盤輸入的一字符串寫到文件中:

FILE *ft;

char str[50];

ft=fopen(“c:\\a.txt”,”w+”);

printf(“輸入一個字符串:”);

scanf(“%s”,str);

fputs(str,ft);

fclose(ft);

//重新打開這個文件並讀出字符串,顯示在屏幕上 ft=fopen(“c:\\a.txt”,”rt”);

fgets(str,50,ft);

fclose(ft); printf(“%s”,str);

二是低級輸入輸出方式 仍如上例:

int hd; char str[50]; printf(“輸入一個字符串:”);

scanf(“%s”,str);

hd=open(“c:\\a.txt”,O_CREAT|O_TEXT|O_WRONLY);

write(hd,str,strlen(str));

close(hd); //重新打開這個文件並讀出字符串,顯示在屏幕上。

hd=open(“c:\\a.txt”,O_TEXT|O_RDONLY); read(hd,str,50);

close(hd); printf(“%s”,str)。

json對象和json數組和數組的區別

Json的規格非常簡單,只用一個頁面幾百個字就能說清楚,而且Douglas Crockford聲稱這個規格永遠不必升級,因為該規定的都規定了。

1) 並列的數據之間用逗號(」, 「)分隔。

2) 映射用冒號(」: 「)表示。

3) 並列數據的集合(數組)用方括號(「[]「)表示。

4) 映射的集合(對象)用大括號(」{}」)表示。

上面四條規則,就是Json格式的所有內容。

比如,下面這句話:

「北京市的面積為16800平方公里,常住人口1600萬人。上海市的面積為6400平方公里,常住人口1800萬。」

寫成json格式就是這樣:

[

{“城市”:”北京”,”面積”:16800,”人口”:1600},

{“城市”:”上海”,”面積”:6400,”人口”:1800}

]

如果事先知道數據的結構,上面的寫法還可以進一步簡化:

[

[“北京”,16800,1600],

[“上海”,6400,1800]

]

由此可以看到,json非常易學易用。所以,在短短几年中,它就取代xml,成為了互聯網上最受歡迎的數據交換格式。

我猜想,Douglas Crockford一定事先就知道,數據結構可以簡化成三種形式,否則怎麼可能將json定義得如此精鍊呢!

3.

學習javascript的時候,我曾經一度搞不清楚」數組」(array)和」對象」(object)的根本區別在哪裡,兩者都可以用來表示數據的集合。

比如有一個數組a=[1,2,3,4],還有一個對象a={0:1,1:2,2:3,3:4},然後你運行alert(a[1]),兩種情況下的運行結果是相同的!這就是說,數據集合既可以用數組表示,也可以用對象表示,那麼我到底該用哪一種呢?

我後來才知道,數組表示有序數據的集合,而對象表示無序數據的集合。如果數據的順序很重要,就用數組,否則就用對象。

4.

當然,數組和對象的另一個區別是,數組的數據沒有」名稱」(name),對象的數據有」名稱」(name)。

但是問題是,很多編程語言中,都有一種叫做」關聯數組」(associative array)的東西。這種數組中的數據是有名稱的。

比如在javascript中,可以這樣定義一個對象:

var a={「城市」:」北京」,」面積」:16800,」人口」:1600};

但是,也可以定義成一個關聯數組:

a[“城市”]=」北京」;

a[“面積”]=16800;

a[“人口”]=1600;

這起初也加劇了我對數組和對象的混淆,後來才明白,在Javascript語言中,關聯數組就是對象,對象就是關聯數組。這一點與php語言完全不同,在php中,關聯數組也是數組。

比如運行下面這段javascript:

var a=[1,2,3,4];

a[‘foo’]=』Hello World』;

alert(a.length);

最後的結果是4,也就是說,數組a的元素個數是4個。

但是,運行同樣內容的php代碼就不一樣了:

?php

$a=array(1,2,3,4);

$a[“foo”]=」Hello world」;

echo count($a);

?

最後的結果是5,也就是說,數組a的元素個數是5個。

怎麼用 C/C++ 把結構體數組轉成 JSON串

用CSTRING的GetBuffer函數返回一個存放字符的頭指針,用一個CHAR *來接受他,然後用下標操作就可以了。

例如:char * ptr = str.GetBuffer();

定義一個數組來接受各個字符

cahr array[10]=”0″;

char array[0]=ptr[0];

char array[1]=ptr[1];

也可以用一個循環,這樣ARRAY數組就保存了CSTRING中的各個字符.

c# json對象中含有數組,數組中又含有數組!

安裝Json.net,using Newtonsoft.Json.Linq;

string result = string.Empty;

using (StreamReader sr = new StreamReader(File.Open(@”D:\csharp\output\output\data.json”, FileMode.Open)))

{

result = sr.ReadToEnd();

}

JObject jo = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(result);

Console.WriteLine(jo[“data”][“symbols”][0][“parts”][0][“means”][1].ToString());

Console.ReadLine();

data.json就是存放的

{“errno”:0,”data”:{“word_name”:”\u597d”,”symbols”:[{“ph_zh”:”h\u01ceo”,”parts”:[{“part”:”\u5f62″,”means”:[“good”,”fine”,”nice”]}]},{“ph_zh”:”h\u00e0o”,”parts”:[{“part”:”\u52a8″,”means”:[“like”,”love”,”be fond of”]},{“part”:”\u540d”,”means”:[“a surname”]}]}]},”to”:”en”,”from”:”zh”}

如何向json對象追加一個新的數組

js中如何向json數組添加元素

比如現在有一條var jsonstr=「 [{‘name’:’a’,’value’:1},{‘name’:’b’,’value’:2}] 」; 然後將其變成json格式的 var json=eval(‘(‘+jsonstr+’)’); 現在我想直接對這個json數組進行操作向其中添加元素,有沒有快捷的方法,還是說必須對上面的字符串進行操作再…展開

冰之幽夢 | 瀏覽 79146 次 2013-08-26 11:44

2015-07-13 09:27最佳答案

json 數組也是數組

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

//1、

var jsonstr=”[{‘name’:’a’,’value’:1},{‘name’:’b’,’value’:2}]”;

var jsonarray = eval(‘(‘+jsonstr+’)’);

var arr =

{

“name” : $(‘#names’).val(),

“value” : $(‘#values’).val()

}

jsonarray.push(arr);

//2、

var json={};// 定義一個json對象

json.array1=[“2″,”4”];// 增加一個新屬性,此屬性是數組

json.array1[json.array1.length]=’6′;// 數組追加一個元素

alert(json.array1)

怎樣用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

ListCJsonObj _Test = new ListCJsonObj(); //建立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 = (ListTest)_Json.ReadObject(_MemoryStream);

//你的JSON文件格式必須與你定的類一致,你懂得

原創文章,作者:GAFX,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/135370.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
GAFX的頭像GAFX
上一篇 2024-10-04 00:12
下一篇 2024-10-04 00:12

相關推薦

  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python去掉數組的中括號

    在Python中,被中括號包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括號。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • JSON的MD5

    在Web開發過程中,JSON(JavaScript Object Notation)是最常用的數據格式之一。MD5(Message-Digest Algorithm 5)是一種常用…

    編程 2025-04-29
  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分佈式文件系統(HDFS)。HDFS是一個可擴展性高的分佈式…

    編程 2025-04-29
  • Python二維數組對齊輸出

    本文將從多個方面詳細闡述Python二維數組對齊輸出的方法與技巧。 一、格式化輸出 Python中提供了格式化輸出的方法,可以對輸出的字符串進行格式化處理。 names = [‘A…

    編程 2025-04-29
  • Java創建一個有10萬個元素的數組

    本文將從以下方面對Java創建一個有10萬個元素的數組進行詳細闡述: 一、基本介紹 Java是一種面向對象的編程語言,其強大的數組功能可以支持創建大規模的多維數組以及各種複雜的數據…

    編程 2025-04-28
  • Python數組隨機分組用法介紹

    Python數組隨機分組是一個在數據分析與處理中常用的技術,它可以將一個大的數據集分成若干組,以便於進行處理和分析。本文將從多個方面對Python數組隨機分組進行詳細的闡述,包括使…

    編程 2025-04-28
  • Python數組索引位置用法介紹

    Python是一門多用途的編程語言,它有着非常強大的數據處理能力。數組是其中一個非常重要的數據類型之一。Python支持多種方式來操作數組的索引位置,我們可以從以下幾個方面對Pyt…

    編程 2025-04-28

發表回復

登錄後才能評論