簡體   English   中英

序列化期間需要JSON

[英]Need for JSON during serialization

好吧,我們知道是否有人說他/她想使用C通過網絡發送整數,我們通常會說:

  • 照顧字節順序和
  • 注意不同PC上的尺寸差異

如果有人想發送浮動報價,我們可能會提供其他建議。

考慮到以上可能的問題,有人可能會說使用:JSON。 我的問題是JSON如何處理/擊敗上述問題? 通過僅將這些數據類型轉換為字符串?

使用JSON時,所有數據都將轉換為字符串。 由處理串行化/反序列化的庫(或多個庫)來產生/解釋值

需要將JSON數據轉換為字符串。

JSON僅具有以下類型:

string
number
object
array
true
false
null

整數將是一個number

{"int": 1}

您提到的問題超出了JSON的范圍。 必須由創建和讀取JSON的編程語言和庫來處理它們。

編輯:

http://json.org/所述 ,可以使用以下格式寫一個number

number
    int
    int frac
    int exp
    int frac exp 
int
    digit
    digit1-9 digits
    - digit
    - digit1-9 digits 
frac
    . digits
exp
    e digits
digits
    digit
    digit digits
e
    e
    e+
    e-
    E
    E+
    E-

這種形式是字節序之上的抽象級別,因為這是位和字節的問題。 這種形式的確允許使用普通的數字類型,例如整數和浮點數。

與手寫協議相比,JSON的優勢:

JSON是標准。 JSON文檔易於閱讀。 JSON文檔記錄了它們的內容。 JSON文檔格式可以升級。 JSON文檔是結構化的。 JSON文檔非常靈活。 可以通過JSON模式檢查JSON文檔。

您需要一些很好的理由來使用專有的二進制格式。

正如其他人所說的那樣,JSON是純文本協議,因此字節序或數據類型大小不會直接影響。

但是,文本可以用許多不同的編碼進行編碼,其中一些編碼可能存在字節順序問題(例如UTF-16)。 盡管對於任何新東西,您都應該使用UTF-8,因為它已被廣泛使用並且沒有那些特定的字節序問題。

編碼仍然是您必須了解的事情。 在二進制/文本之間沒有簡單的正確選擇,只有一系列不同的問題和權衡取舍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM