- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我继承了一个有点大的、基于 Java 的服务器端代码库,它使用 JSON 与客户端通信。有几个原因,基于 Jackson 的 JSON 转换必须使用二进制形式——换句话说,我在服务器上生成的 JSONside 由字节组成,而不是字符。
这对于以前的客户端来说不是问题,因为它们都是基于 Java 的。我可以使用 Jackson 库将二进制文件转换回对象。不幸的是,有人要求我创建一些基于浏览器的客户端,这些客户端需要使用 Javascript 才能接收和显示 JSON 信息。
我正在尝试使用 JQuery 的 JSON 转换函数,但事实证明 JQuery 和常规 Javascript 函数都无法将一组 JSON 字节转换回对象。我需要将字节转换回字符,以便将它们转换回对象。
我了解到,为了将字节转换为字符,我必须将字节转换为字节数组。这就是我遇到问题的地方。
我一直在尝试使用各种方法将二进制 JSON 信息转换回可以使用 JSON 转换函数转换为有意义的对象的形式(字节数组)。我尝试使用 ArrayBuffer 将数据转换为字节缓冲区,然后使用 int8Array() 函数创建字节数组:
var buffer = new ArrayBuffer(obj.payload.length);
var bits = new Int8Array(buffer);
我还尝试使用 uint8Array(),并尝试了在 Internet 上(以及此处的 Stack Overflow)上找到的各种其他转换例程,以创建可以转换为有意义的字符的数组。我所有的尝试要么在运行时导致错误和失败,要么产生了破坏 JSON 转换器的垃圾。
有没有办法让 Javascript 读取 Jackson 生成的一组字节,以便使用 JSON 转换器将它们转换回对象?还是 Javascript 只能转换 JSON 字符串?
有人请指点...
最佳答案
假设您的二进制 JSON 是这样的:
[123, 34, 107, 101, 121, 34, 58, 34, 118, 97, 108, 117, 101, 34, 125]
您可以轻松地将其转换为字符串:
var str = String.fromCharCode.apply(String, data);
并使用 JSON 对象解析:
JSON.parse(str);
关于javascript - 如何在 Javascript 中转换 JSON 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43180996/
我是一名优秀的程序员,十分优秀!