⑴ socket如何傳輸json數據包
Json是個數據結構,可以轉化成字元串
字元串可以轉化成二進制
而Socket發送的就是二進制數據。可以將Json轉化的二進制數據包含在內,加上數據頭什麼的一起傳輸。
解析的同理,根據數據頭判斷消息內容,然後再解析一段數據轉字元串, 字元串轉JSON。
原理清楚了就不需要說別的了吧?
⑵ 使用json傳輸數據有什麼優缺點
JSON 作為一種更輕、更友好的 Web services客戶端的格式(多採用瀏覽器的形式或訪問 REST風格 Web服務的Ajax應用程序的形式)引起了 Web 服務供應商的注意。
JSON剖析:優點和不足
對於JSON,首先要明白JSON和XML一樣也是一種簡單文本格式。相對於XML,它更加易讀、更便於肉眼檢查。在語法的層面上,JSON與其他格式的區別是在於分隔數據的字元,JSON中的分隔符限於單引號、小括弧、中括弧、大括弧、冒號和逗號
乍看上去,使用JSON的數據分隔符的優點可能並不那麼明顯,但存在一個根本性的緣由:它們簡化了數據訪問。使用這些數據分隔符時, javaScript引擎對數據結構(如字元串、數組、對象)的內部表示恰好與這些符號相同。
這將開創一條比DOM技術更為便捷的數據訪問途徑。下面列舉幾個JavaScript代碼片段來說明這一過程,這些代碼片段會訪問先前的JSON代碼片段中的信息:
訪問JSON中的名稱: addressbook.name
訪問JSON中的地址: addressbook.address.street
訪問JSON中的電話號碼第一位:addressbook.address.phoneNumbers[0]
如果您具備DOM編程經驗,就能很快地看出區別;新手可以參看 Document Object Model 的這一外部資源,這里提供了關於數據導航的實例。
JSON的另一個優點是它的非冗長性。在XML中,打開和關閉標記是必需的,這樣才能滿足標記的依從性;而在JSON中,所有這些要求只需通過一個簡單的括弧即可滿足。在包含有數以百計欄位的數據交換中,傳統的XML標記將會延長數據交換時間。目前還沒有正式的研究表明JSON比XML有更高的線上傳輸效率;人們只是通過簡單的位元組數比較發現,對於等效的JSON和XML有效負載,前者總是小於後者。至於它們之間的差距有多大,特別是在新的XML壓縮格式下它們的差距有多大,有待進一步的研究。
此外,JSON受到了擅長不同編程語言的開發人員的青睞。這是因為無論在Haskell中或 Lisp中,還是在更為主流的C#和PHP中,開發都可以方便地生成JSON(詳見 參考資料)。
不足
和許多好東西都具有兩面性一樣,JSON的非冗長性也不例外,為此JSON丟失了XML具有的一些特性。命名空間允許不同上下文中的相同的信息段彼此混合,然而,顯然在JSON中已經找不到了命名空間。JSON與XML的另一個差別是屬性的差異,由於JSON採用冒號賦值,這將導致當XML轉化為JSON時,在標識符(XML CDATA)與實際屬性值之間很難區分誰應該被當作文本考慮。
另外,JSON片段的創建和驗證過程比一般的XML稍顯復雜。從這一點來看,XML在開發工具方面領先於JSON。盡管如此,為了消除您對這一領域可能存在的困惑,
⑶ 伺服器端和客戶端進行json數據傳輸,json是不是也是通過http協議進行位元組流傳輸的
先看一看json的定義: JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。
可見它只是一種數據格式,專可以對其使用任屬何可行的傳輸協議。
但一般的網路傳輸都使用http協議,
這和使用http協議傳輸視頻格式文件,音頻的道理是一致的。
json的傳輸相當於對字元串的傳輸。
所以:
伺服器端和客戶端的json數據傳輸,可以而且最好使用http協議進行位元組流傳輸,但不僅限於http協議。
⑷ 如何優化很長的JSON數據
現在主流的網路請求中都採用JSON作為其數據交互格式,這主要是因為JSON有以下優勢:
但如果在開發過程中,把很長很大的JSON數據在前後端傳輸,那就說明設計工作沒做好,應該盡量避免這種數據傳輸,但也可以從下面幾個方面進行下優化:
在 Skylake 處理器上,各種解析器解析同一個大數據量的JSON文件的速度(以 GB/s 為單位)如下所示:
我們知道,JSON作為一種輕量級的數據交換格式,現在被廣泛應用,特別是在API層,返回數據格式基本上都是JSON。但是, JSON字元串如果過長,那在網路傳輸中也存在耗時的 ,站在性能角度我們需要合理優化JSON。
1、伺服器端 開啟GZip壓縮
主流的服務端都支持GZip壓縮,對於一般的純文本內容GZip壓縮率在35%以上,這樣做的好處也很明顯:
2、 鍵名縮短
對於結果集而言,數據都是查詢循環輸出的,所以當我們把鍵名縮短也變相壓縮了JSON文本長度。比如原本的 {"name":"張三"} 我們可以寫為 {"a":"張三"}
3、JSON中的 中文避免被轉為Unicode編碼
現在也有不少人喜歡將JSON中的漢字轉為Unicode編碼,此時JSON文本內容就會變得很長,如果避免漢字轉碼,可以控制文本長度。
1,開啟gzip,壓縮率很高,即便是很長的文本,在網路中傳輸量也很小 。
2,不建議分次請求,除非是業務需要。連接次數過多,加大了並發的壓力。
3,提醒用戶點擊的做法可以通過按鈕反饋或loading條來做。
4,如果有可能,考慮提前預讀你可以這樣,在一個隱藏的 iframe 裡面請求伺服器,返回值是這樣的: <script> parent.notifyDataArrive(YOURS_JSON_DATA); </script>
⑸ 請問哪位高手知道JSON 數據最大的數據量是多大
由轉換時間的決定,比如java.lang.String,JVM在處理字元串中字元的時候,用到了兩個int型變數,一個是offset(位移)和count(字元串長度),將編碼數據作為字元串傳輸。
JSON 可以將 JavaScript 對象中表示的一組數據轉換為字元串,然後就可以在網路或者程序之間輕松地傳遞這個字元串,並在需要的時候將還原為各編程語言所支持的數據格式,例如在 PHP 中,可以將 JSON 還原為數組或者一個基本對象。在用到AJAX時,如果需要用到數組傳值,這時就需要用JSON將數組轉化為字元串。
(5)json大數據傳輸擴展閱讀:
1、可讀性:
JSON和XML的可讀性可謂不相上下,一邊是簡易的語法,一邊是規范的標簽形式,很難分出勝負。
2、可擴展性:
XML天生有很好的擴展性,JSON當然也有,沒有什麼是XML可以擴展而JSON卻不能擴展的。不過JSON在Javascript主場作戰,可以存儲Javascript復合對象,有著xml不可比擬的優勢。
3、編碼難度:
XML有豐富的編碼工具,比如Dom4j、Dom、SAX等,JSON也有提供的工具。無工具的情況下,相信熟練的開發人員一樣能很快的寫出想要的xml文檔和JSON字元串,不過,xml文檔要多很多結構上的字元。
4、解碼難度:
XML的解析方式有兩種:
一是通過文檔模型解析,也就是通過父標簽索引出一組標記。例如:xmlData.getElementsByTagName("tagName"),但是這樣是要在預先知道文檔結構的情況下使用,無法進行通用的封裝。
另外一種方法是遍歷節點(document 以及 childNodes)。這個可以通過遞歸來實現,不過解析出來的數據仍舊是形式各異,往往也不能滿足預先的要求。
凡是這樣可擴展的結構數據解析起來一定都很困難。
JSON也同樣如此。如果預先知道JSON結構的情況下,使用JSON進行數據傳遞簡直是太美妙了,可以寫出很實用美觀可讀性強的代碼。如果你是純粹的前台開發人員,一定會非常喜歡JSON。但是如果你是一個應用開發人員,就不是那麼喜歡了,畢竟xml才是真正的結構化標記語言,用於進行數據傳遞。
⑹ 【JSON】JSON在前端和後端傳遞
後端:我們假定使用的是java語言
前端:毫無疑問是js
java語言:是一種強類型的語言,必須定義類型,然後生成實例;而js卻不是,雖然它也是面向對象的,但是它並沒有先定義類這一種概念(但是js也有類型),它是基於原型的一種模式,和java完全不同。很顯然,二者的原理,機制,語法並不能兼容。二者產生的對象並不能被對方解讀。再來看網路傳輸,通常就是http/tcp協議嘍,使用的其實是請求-響應,再說白了即使字元串,不論後台傳來的是什麼類型的數據,也不論前台傳回的什麼類型的數據,網路層統統當作字元串處理,它也沒有辦法來解析類型啊!說到這里,前後台傳數據也就只能用字元串了,那也就意味著它們各自都要完成一個轉換過程,把要發送的轉換成字元串,把要收到的字元串解析成自己的對象。因為傳輸的字元串會涉及前後台雙方的解析和處理,所以雙方都必須認識或者知道字元串該怎麼轉,也就是說,最好能有一種通用的規則來編輯,轉換字元串,這個標准或者協議就是JSON,JSON就是用來交換數據的,是一種string,一種獨立於平台的數據格式。
這樣一來,前台就需要把自己的數據類型轉成JSON,然後發給後台,後台在用JSON來解析數據,轉換成自己的類型。後台傳前台一樣。那麼,怎麼把自己的數據轉成JSON呢?
`JSON`對象可以通過JavaScript存取屬性!JSON對象封裝成JSON字元串經常用於前後台傳輸數據!
如果在前端使用,那麼JSON對象可以通過 對象.屬性名 來調用,如果是json字元串,那麼只是字元串了!
在數據傳輸過程中,JSON是以文本、即字元串的形式傳遞的,而JavaScript操作的是JSON對象,所以,JSON對象和JSON字元串之間的相互轉換是關鍵。
JSON字元串:var str = '{ name: 'xmt', sex: 'woman' }';
JSON對象: var str = { name: 'xmt', sex: 'woman' };
JSON字元串轉化為JSON對象:var obj = JSON.parse(str) ;
JSON對象轉化為JSON字元串:var str = JSON.stringify(obj);