java - 如何使用 google-Gson 和 JSON.stringify 获得相同的结果

标签 java javascript json gson stringify

在我的java代码中,我有一个带有 o 类型 Map<String,String> 成员的类。我使用 google Gson 库将对象转换为 json 字符串,反之亦然。

我想对 javascript 和来自 json.org 的 JSON 库做同样的事情。

问题是 javascript 没有“ map 对象”,如果我使用数组来模拟 map ,则数组上 JSON.stringify 的结果与 Map<String,String> 上的 Gson 不同。 .

我还尝试使用库 jshashtable 2.1 (http://www.timdown.co.uk/jshashtable/index.html) 中的 Hashtable javascript 对象并创建自定义 toJSON 方法,但这种方法不起作用,因为 JSON 在这些情况下所做的是对自定义 toJSON 方法返回的对象进行字符串化。

这就是我得到的:

使用 java 和 Gson:

{
    "var_1": "value_1",
    "var_2": "value_2",
    "map": {
        "name_1": "value_1",
        "name_2": "value_2"
    }
}

使用 JavaScript 和 JSON:

{
    "var_1": "value_1",
    "var_2": "value_2",
    "map": [
        ["name_1", "value_1"],
        ["name_2", "value_2"]
    ]
}

有什么方法可以解决这个问题并从java和javascript获取相同的“json字符串”吗?

提前致谢...

最佳答案

The problem is javascript hasn't "map objects"...

是的,确实如此:所有 JavaScript 对象都是映射。为了获得您正在寻找的内容,您需要创建此对象图:

var obj = {
    "var_1": "value_1",
    "var_2": "value_2",
    "map": {
        "name_1": "value_1",
        "name_2": "value_2"
    }
};

...并使用 JSON.stringify

var json = JSON.stringify(obj);

var obj = 后面的那部分看起来很熟悉?那是因为它是 JavaScript object initializer ,而 JSON 是对象初始值设定项语法的子集。 :-) 如果您愿意,您可以通过其他方式构建该对象:

var obj = {};
obj.var_1 = "value_1";
obj.var_2 = "value_2";
obj.map = {};
obj.map.name_1 = "value_1";
obj.map.name_2 = "value_2";

...在调用 JSON.stringify 后也会给你同样的结果。

关于java - 如何使用 google-Gson 和 JSON.stringify 获得相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10754418/

相关文章:

javascript - 如何从 Angular 中的表单信息生成 pdf 文件?

javascript - React.js 和 webpack 2,需要一个解决方案

asp.net - 在删除数据 View 的行之前确认删除

jquery - 使用 Jquery (jmespath) 从 Ansible 获取 API 调用

javascript - 无法在 JQuery 中正确解析 JSON 数据

java - DataNucleus、Maven、模式创建失败

java - CXF wsdl2java - 生成不带包装器的列表(静态内部类)

java - 我怎样才能找到平均分最高的学生的名字? java

java - Eclipse CTRL+SPACE 删除文本

ios - 使用 AlamoFire 和本地 JSON