回答
這是base64編碼字節數組的一個很好的例子。當你在混合中丟棄unicode字符來發送諸如PDF文檔之類的東西時,它會變得更加複雜。編碼字節數組後,編碼後的字符串可以用作JSON屬性值。
阿帕奇百科全書提供了良好的工具:
byte[] bytes = getByteArr();
String base64String = Base64.encodeBase64String(bytes);
byte[] backToBytes = Base64.decodeBase64(base64String);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding
Java服務器端例如:
public String getUnsecureContentBase64(String url)
throws ClientProtocolException, IOException {
//getUnsecureContent will generate some byte[]
byte[] result = getUnsecureContent(url);
// use apache org.apache.commons.codec.binary.Base64
// if you're sending back as a http request result you may have to
// org.apache.commons.httpclient.util.URIUtil.encodeQuery
return Base64.encodeBase64String(result);
}
JavaScript的解碼:
//decode URL encoding if encoded before returning result
var uriEncodedString = decodeURIComponent(response);
var byteArr = base64DecToArr(uriEncodedString);
//from mozilla
function b64ToUint6 (nChr) {
return nChr > 64 && nChr < 91 ?
nChr - 65
: nChr > 96 && nChr < 123 ?
nChr - 71
: nChr > 47 && nChr < 58 ?
nChr + 4
: nChr === 43 ?
62
: nChr === 47 ?
63
:
0;
}
function base64DecToArr (sBase64, nBlocksSize) {
var
sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen = sB64Enc.length,
nOutLen = nBlocksSize ? Math.ceil((nInLen * 3 + 1 >> 2)/nBlocksSize) * nBlocksSize : nInLen * 3 + 1 >> 2, taBytes = new Uint8Array(nOutLen);
for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
nMod4 = nInIdx & 3;
nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;
if (nMod4 === 3 || nInLen - nInIdx === 1) {
for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;
}
nUint24 = 0;
}
}
return taBytes;
}
Base64 is sllllloooooooooooo ..... – Pacerier
在json中發送二進制文件的典型方法是對base64進行編碼。
Java提供了不同的方式來Base64編碼和解碼byte[]
。其中之一是DatatypeConverter
。
很簡單
byte[] originalBytes = new byte[] { 1, 2, 3, 4, 5};
String base64Encoded = DatatypeConverter.printBase64Binary(originalBytes);
byte[] base64Decoded = DatatypeConverter.parseBase64Binary(base64Encoded);
你必須進行這種轉換取決於你使用JSON解析器/發電機庫。
WHA t大概是這樣的:
byte[] args2 = getByteArry();
String byteStr = new String(args2);
String(byte [])構造函數會將它編碼爲應用默認編碼的字符串。這可能會改變原始字節內容。另外,另一方面,應該清楚你正在使用哪種編碼。 – fcracker79
- 1. 將數組數組轉換爲字節,反之亦然C#
- 2. 圖像到字節數組到字符串(反之亦然)
- 3. 將字節數組轉換爲字符串,反之亦然
- 4. 字符串到字節[]數組反之亦然
- 5. C#字節數組到字符串,反之亦然
- 6. ArrayList到字節,反之亦然
- 7. 將PDF轉換爲字節數組和反之亦然android
- 8. 將int值轉換爲3字節數組(反之亦然)
- 9. 將GSSCredential導出爲字節數組,反之亦然
- 10. 從ActiveX傳遞字節數組到JavaScript,反之亦然
- 11. C#int64列表到字節數組,反之亦然鑄造?
- 12. 將兩個字節轉換爲一個字節,反之亦然
- 13. 將十進制數組轉換爲字節數組,反之亦然在C#
- 14. 將字節數組轉換爲Java中的整數,反之亦然
- 15. 轉換圖像爲字節數組和反之亦然
- 16. 流程圖到JSON和反之亦然
- 17. 填充JSON到C#類,反之亦然
- 18. 將字節數轉換爲灰度和反之亦然
- 19. PHP中的數字串,反之亦然
- 20. 圖像到字節數組以字符串(反之亦然)在Android?
- 21. 在golang中將[] uint32轉換爲[]字節,反之亦然
- 22. 在c#中將Uint64轉換爲5字節,反之亦然#
- 23. 將字符串轉換爲golang中的json,反之亦然?
- 24. XAML到Html,反之亦然
- 25. PHP到C#反之亦然
- 26. 將紅寶石數組轉換爲字符串,反之亦然
- 27. 將類轉換爲字節數組和反之亦然時出錯?
- 28. 結構到字符串,反之亦然
- 29. 將多維數組複製到矢量,反之亦然
- 30. 變換JSON對象爲數字字符串,反之亦然
JSON不支持。使用Base64。它確實有 – SLaks
。我用這個:jsonObj.put(byte []); –