【问题标题】:How to obtain the same result with google-Gson and JSON.stringfy如何使用 google-Gson 和 JSON.stringify 获得相同的结果
【发布时间】:2012-06-01 00:52:20
【问题描述】:

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

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

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

我还尝试使用库 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 字符串”?

提前谢谢...

【问题讨论】:

    标签: java javascript json gson stringify


    【解决方案1】:

    问题是 javascript 没有“映射对象”...

    是的,确实如此:所有 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 之后,它也会给你同样的东西。

    【讨论】:

    • 完美!我想投票赞成你的答案,但我没有足够的声誉。非常感谢!
    • @Nicolas:很好,很高兴有帮助。
    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 2013-12-16
    • 2018-10-24
    • 2021-07-17
    相关资源
    最近更新 更多