日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java json u0026_特殊字符的json序列化

發(fā)布時(shí)間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java json u0026_特殊字符的json序列化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

先來看一段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"}

先來段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":"

再來看段python的

import json

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

print(json.dumps(data))

輸出結(jié)果

{"str0": "Hello, world", "str1": "", "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":"","str0":"Hello, world"}

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

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

// String values encode as JSON strings coerced to valid UTF-8,

// replacing invalid bytes with the Unicode replacement rune.

// The angle brackets "" 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)為這倆是無效字節(jié)(這點(diǎn)比較奇怪),

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

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的java json u0026_特殊字符的json序列化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。