亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

特殊字符的json序列化總結(jié)大全

 更新時(shí)間:2018年09月09日 09:03:03   作者:wu_sphinx  
這篇文章主要給大家介紹了關(guān)于特殊字符的json序列化的相關(guān)資料,通過(guò)示例代碼分別給大家介紹了關(guān)于python 、 rust 、 java 和golang對(duì)特殊字符的json序列化操作,需要的朋友可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

JSon 數(shù)據(jù)中的String 傳遞數(shù)據(jù)時(shí),需要處理好特殊字符.本文主要給大家總結(jié)介紹了關(guān)于golang、rust、java和Python對(duì)特殊字符的json序列化處理操作,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧

先來(lái)看一段 golang

package main

import (
 "encoding/json"
 "fmt"
)

func main() {

 data := map[string]string{
 "str0": "Hello, world",
 "str1": "<",
 "str2": ">",
 "str3": "&",
 }
 jsonStr, _ := json.Marshal(data)

 fmt.Println(string(jsonStr))
}

輸出結(jié)果

{"str0":"Hello, world","str1":"\u003c","str2":"\u003e","str3":"\u0026"}

先來(lái)段 rust 的

extern crate rustc_serialize;
use rustc_serialize::json;
use std::collections::HashMap;

fn main(){
 let mut data = HashMap::new();
 data.insert("str0","Hello, world");
 data.insert("str1","<");
 data.insert("str2",">");
 data.insert("str3","&");
 println!("{}", json::encode(&data).unwrap());
}
}

結(jié)果

{"str0":"Hello, world","str2":">","str1":"<","str3":"&"}

再來(lái)看段 python 的

import json

data = dict(str0='Hello, world',str1='<',str2='>',str3='&')

print(json.dumps(data))

輸出結(jié)果

{"str0": "Hello, world", "str1": "<", "str2": ">", "str3": "&"}

再看看java的

import org.json.simple.JSONObject;

class JsonDemo
{
 public static void main(String[] args)
 {
 JSONObject obj = new JSONObject();

 obj.put("str0", "Hello, world");
 obj.put("str1", "<");
 obj.put("str2", ">");
 obj.put("str3", "&");

 System.out.println(obj);
 }
}

輸出結(jié)果

{"str3":"&","str1":"<","str2":">","str0":"Hello, world"}

總結(jié)

可以看到 python 、 rust 和 java 對(duì)這4個(gè)字符串序列化結(jié)果幾乎是相同的了(除了java序列化后順序有微小變化外),golang明顯對(duì) < ,

> , & 進(jìn)行了轉(zhuǎn)義處理,看看文檔怎么說(shuō)的

// String values encode as JSON strings coerced to valid UTF-8,  // replacing invalid bytes with the Unicode replacement rune.  // The angle brackets "<" and ">" are escaped to "\u003c" and "\u003e"  // to keep some browsers from misinterpreting JSON output as HTML.  // Ampersand "&" is also escaped to "\u0026" for the same reason.

& 被轉(zhuǎn)義是為了防止一些瀏覽器將JSON輸出曲解為HTML,

而 < , > 被強(qiáng)制轉(zhuǎn)義是因?yàn)間olang認(rèn)為這倆是無(wú)效字節(jié)(這點(diǎn)比較奇怪),

我如果技術(shù)棧都是golang還好說(shuō),如果跨語(yǔ)言跨部門合作一定需要注意這點(diǎn)(已踩坑)……

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • golang中protobuf的使用詳解

    golang中protobuf的使用詳解

    protobuf是Google公司提出的一種輕便高效的結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)格式,常用于結(jié)構(gòu)化數(shù)據(jù)的序列化,具有語(yǔ)言無(wú)關(guān)、平臺(tái)無(wú)關(guān)、可擴(kuò)展性特性,常用于通訊協(xié)議、服務(wù)端數(shù)據(jù)交換場(chǎng)景,下面我們就來(lái)看看golang中protobuf的具體使用吧
    2023-10-10
  • GPT回答 go語(yǔ)言和C語(yǔ)言數(shù)組操作對(duì)比

    GPT回答 go語(yǔ)言和C語(yǔ)言數(shù)組操作對(duì)比

    這篇文章主要為大家介紹了GPT回答的go語(yǔ)言和C語(yǔ)言數(shù)組操作方法對(duì)比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Go語(yǔ)言中的if條件語(yǔ)句使用詳解

    Go語(yǔ)言中的if條件語(yǔ)句使用詳解

    這篇文章主要介紹了Go語(yǔ)言中的if條件語(yǔ)句的使用,包括if...else語(yǔ)句以及相關(guān)嵌套,需要的朋友可以參考下
    2015-10-10
  • 一文搞懂Golang中的內(nèi)存逃逸

    一文搞懂Golang中的內(nèi)存逃逸

    內(nèi)存逃逸是 Go 語(yǔ)言中一個(gè)重要的概念,涉及到程序的性能優(yōu)化和內(nèi)存管理,了解內(nèi)存逃逸可以幫助我們編寫更高效的代碼,本文將從基本概念入手,深入講解 Go 語(yǔ)言中的內(nèi)存逃逸現(xiàn)象,以及如何避免,需要的朋友可以參考下
    2023-12-12
  • 使用Go構(gòu)建一款靜態(tài)分析工具Owl詳解

    使用Go構(gòu)建一款靜態(tài)分析工具Owl詳解

    Owl是一款開(kāi)源項(xiàng)目依賴分析工具,可以快速在指定的項(xiàng)目目錄下查找符合某些特征的源代碼文件或者依賴文件,這篇文章主要介紹了使用Go構(gòu)建一款靜態(tài)分析工具,需要的朋友可以參考下
    2022-06-06
  • Go語(yǔ)言題解LeetCode561數(shù)組拆分

    Go語(yǔ)言題解LeetCode561數(shù)組拆分

    這篇文章主要為大家介紹了Go語(yǔ)言題解LeetCode561數(shù)組拆分示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Go語(yǔ)言context上下文管理的使用

    Go語(yǔ)言context上下文管理的使用

    本文主要介紹了Go語(yǔ)言context上下文管理的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 淺談Go中數(shù)字轉(zhuǎn)換字符串的正確姿勢(shì)

    淺談Go中數(shù)字轉(zhuǎn)換字符串的正確姿勢(shì)

    這篇文章主要介紹了淺談Go中數(shù)字轉(zhuǎn)換字符串的正確姿勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Go語(yǔ)言學(xué)習(xí)教程之結(jié)構(gòu)體的示例詳解

    Go語(yǔ)言學(xué)習(xí)教程之結(jié)構(gòu)體的示例詳解

    結(jié)構(gòu)體是一個(gè)序列,包含一些被命名的元素,這些被命名的元素稱為字段(field),每個(gè)字段有一個(gè)名字和一個(gè)類型。本文通過(guò)一些示例帶大家深入了解Go語(yǔ)言中結(jié)構(gòu)體的使用,需要的可以參考一下
    2022-09-09
  • Go語(yǔ)言操作數(shù)據(jù)庫(kù)及其常規(guī)操作的示例代碼

    Go語(yǔ)言操作數(shù)據(jù)庫(kù)及其常規(guī)操作的示例代碼

    這篇文章主要介紹了Go語(yǔ)言操作數(shù)據(jù)庫(kù)及其常規(guī)操作的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論