[英]Issue with Base64 encoding in Python and Decoding in Java
我有兩個包在運行,一個寫在 python 中,另一個寫在 Java 中。python package 編碼一個 json(字典)object 並將它發送到 java java
設python中的json為:
{ "name": "John", "Age": 24, "Income": None }
問題是 Java 不支持 None,它支持 null,因此它無法解析收到的 json 拋出錯誤“found None expected true, false, null, NaN”。
上面json在python中的Base64編碼:
eyAibmFtZSI6ICJKb2huIiwgIkFnZSI6IDI0LCAiSW5jb21lIjogTm9uZX0=
上面json在java中的Base64編碼:
eyAibmFtZSI6ICJKb2huIiwgIkFnZSI6IDI0LCAiSW5jb21lIjogbnVsbH0=
我還需要解析 Java 中的 null 值,不能簡單地將其從 json 中刪除。避免此錯誤的可能解決方案是什么?
問題是{ "name": "John", "Age": 24, "Income": None }
不是有效的 JSON object 因為None
不是有效的 JSON 值。
根據JSON 語法一個值可能是:
"xy"
)12.345
){ "prop": "value" }
)[1,2,3]
)true
false
null
如果您的 json 編碼器產生的值None
它已損壞 - 也許您應該使用標准的 python 編碼器:
import json
r = {"name": "John", "Age": 24, "Income": None}
enc = json.JSONEncoder()
print(enc.encode(r))
生成有效的 JSON Java JSON 解析器可以解析:
{"name": "John", "Age": 24, "Income": null}
這些數據可以安全傳輸嗎? 我想是這樣。
使用以下示例:
import json
r = {"name": "Jöhn дое", "Age": 24, "Income": None}
enc = json.JSONEncoder()
print(enc.encode(r))
這被編碼成普通的 ASCII:
{"name": "J\u00f6hn \u0434\u043e\u0435", "Age": 24, "Income": null}
如果您不相信這對於通過網絡傳輸是安全的,您仍然可以使用 base64 編碼JSONEncoder.encode()
方法的 output。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.