91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JSON怎么封裝數據和解析數據

發布時間:2021-07-20 10:51:10 來源:億速云 閱讀:174 作者:chen 欄目:大數據

本篇內容主要講解“JSON怎么封裝數據和解析數據”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JSON怎么封裝數據和解析數據”吧!

JSON簡介

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,它基于JavaScript的一個子集,易于人的編寫和閱讀,也易于機器解析。JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數據交換語言。

JSON由兩種結構組成:

1.鍵值對的無序集合——對象(或者叫記錄、結構、字典、哈希表、有鍵列表或關聯數組等)

2.值的有序列表——數組

這些都是常見的數據結構。事實上大部分現代計算機語言都以某種形式支持它們。這使得一種數據格式在同樣基于這些結構的編程語言之間交換成為可能。

JSON中的形式:

對象是一個無序鍵值對的集合,以"{"開始,同時以"}"結束,鍵值對之間以":"相隔,不同的鍵值對之間以","相隔,舉例

{    "key1" : 1,    "key2" : "string"}
J  SON優缺點

總結:

1.占帶寬小(格式是壓縮的)

2. js通過eval()進行Json讀取(便于客戶端讀取)

3. JSON支持多種語言(c、c++、PHP等),便于服務端解析

JSON (JavaScript Object Notation) 的輕量級數據交換格式能夠替代XML的工作.

優點:

1. 數據格式比較簡單, 易于讀寫, 格式都是壓縮的, 占用帶寬小

2. 易于解析這種語言, 客戶端javascript可以簡單的通過eval()進行JSON數據的讀取 

3. 支持多種語言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, php, Python, Ruby等語言服務器端語言, 便于服務器端的解析

4. 在PHP世界, 已經有PHP-JSON和JSON-PHP出現了, 便于PHP序列化后的程序直接調用. PHP服務器端的對象、數組等能夠直接生JSON格式, 便于客戶端的訪問提取.   另外PHP的PEAR類已經提出了支持 (http://pear.php.net/pepr/pepr-proposal-show.php?id=198)

5. 因為JSON格式能夠直接為服務器端代碼使用, 大大簡化了服務器端和客戶端的代碼開發量, 但是完成的任務不變, 且易于維護

缺點:

1. 沒有XML格式這么推廣的深入人心和使用廣泛, 沒有XML那么通用性2. JSON格式目前在Web Service中推廣還屬于初級階段PS: 據說Google的Ajax是使用 JSON+模板 做的

JSON實際使用情況:
在實際調用接口中,傳輸數據經常會用到json,例如請求騰訊云短信發送接口,請求參數數據格式就是json,如下圖:

JSON怎么封裝數據和解析數據

在實際使用中怎么判斷json格式是否正確呢?百度JSON在線工具,直接校驗,如下圖:

JSON怎么封裝數據和解析數據

老鐵,這個json格式,沒毛病,提示是不是很直接。。。。。。。哈哈。

C++ 使用Json封裝數據和解析數據

使用C++和別的語言做交互比較常用的一種數據操作方式就是json。可以到GitHub上下載對應C++的json庫源碼,我自己下了一套之前的版本,可以正常使用。jsoncpp-src

編譯出來的庫名:json_vc71_libmtd.lib(debug) | json_vc71_libmt.lib(release)

需要包含的頭文件:jsoncpp-src(對應源碼)/include/json (該目錄下所有文件)

調用庫方式
#include "json/json.h"#ifdef _DEBUG#pragma comment(lib,"./lib/json_vc71_libmtd.lib")#else#pragma comment(lib,"./lib/json_vc71_libmt.lib")#endif
封裝json數據為string
方法1:
std::string DataToJson(){    Json::FastWriter writerinfo;    Json::Value  writevalueinfo;    writevalueinfo["id"]=abc123;       writevalueinfo["time"]="2020.04.26 00:00:00";
   Json::Value  writedata;    writedata["count"] = 1;    writedata["name"] = "cpp";
   writevalueinfo["data"]=writedata;
   std::string strEmail = writerinfo.write(writevalueinfo);    return strEmail;}
示例json://公眾號:C與C語言plus{    "data": {        "count": 1,        "name": "cpp"    },    "id": abc123,    "time": "2020.04.26 00:00:00"}

方法2(直接拼接):

CString strTempData;msg_content =  ” 1號設備水位超過閾值報警”;cstrsha256 =  “20823c7cf53e97898f39f212b9dbee960220b3fa272c884c62f1f3fe6af56f38”;strmobile =  “ 13004091102”;strtime =  “1587711951 ”;strTempData.Format("{\"tpl_id\": %ld,\"params\":\[ \"%s\"\],\"playtimes\": %d,\"sig\": \"%s\",\"tel\":\{\"mobile\":\"%s\",\"nationcode\":\"%d\"\},\"time\": %ld, \"ext\":\"\"\}",568369,msg_content,2,cstrsha256,strmobile,86,strtime);
示例json:  //公眾號:C與C語言plus{  "tpl_id": 568369,  "params": ["1號設備水位超過閾值報警 "],  "playtimes": 2,  "sig": "20823c7cf53e97898f39f212b9dbee960220b3fa272c884c62f1f3fe6af56f38",  "tel": {    "mobile": "13004091102",    "nationcode": "86"  },  "time": 1587711951,  "ext": ""}
解析json數據
void TranslateJson(const string strData){    // 解析json用Json::Reader    Json::Reader *readerinfo = new Json::Reader(Json::Features::strictMode());    // Json::Value是一種很重要的類型,可以代表任意類型。如int, string, object, array...    Json::Value root;           if (readerinfo->parse(strData, root))    {        if (root["id"].isInt())        {            int nID = root["id"].asInt();        }        if (root["time"].isString())        {            std::string strTime = root["time"].asString();        }        if (root["data"]["count"].isInt())        {            int nDataCount = root["data"]["count"].asInt();        }
       if (root["data"]["name"].isString())        {            std::string strDataName = root["data"]["name"].asString();        }
   }    ::delete readerinfo;    readerinfo = NULL;}

到此,相信大家對“JSON怎么封裝數據和解析數據”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄骅市| 灌云县| 府谷县| 正镶白旗| 安丘市| 城固县| 临洮县| 东宁县| 海林市| 舞钢市| 射阳县| 澄城县| 上虞市| 乌兰察布市| 四川省| 莆田市| 镇安县| 洛宁县| 竹山县| 丰镇市| 永川市| 方城县| 阿克苏市| 苍南县| 泉州市| 鄢陵县| 江油市| 扎鲁特旗| 平顺县| 介休市| 拉萨市| 汶川县| 宜城市| 中阳县| 辛集市| 萨嘎县| 栾川县| 禄劝| 江孜县| 许昌县| 景洪市|