【问题标题】:Transfer PHP associative array to Java Map<String, Double> using JSON (GSON)使用 JSON (GSON) 将 PHP 关联数组传输到 Java Map<String, Double>
【发布时间】:2015-01-28 03:44:20
【问题描述】:

我正在使用 PHP 将 JSON 编码的关联数组返回给客户端。该数组是通过循环遍历 MySQL 数据库查询的结果集来构造的。为简单起见,我们不显示返回结果集的所有代码,而是假设查询的一个可能输出在 PHP 中生成以下关联数组:

$ResultRows = array(
    "10 m" => 10,
    "100 m" => 100,
    "1000 m" => 1000
);

echo json_encode($ResultRows);

json_encode 生成的 JSON 字符串如下所示:

{"10 m":10,"100 m":100,"1000 m":1000}

如您所见,它被编码为一个对象,每个键值对看起来像一个属性名称和值。

现在,运行 Java 的客户端接收到这个 JSON 编码的字符串。我想创建一个由这些值填充的LinkedHashMap&lt;String, Double&gt; 实例。但是,由于它不像数组那样编码,我很难看到如何使用 GSON 来解码它。有什么想法吗?

我可以简单地更改 PHP 并创建一个简单的对象来保存键/值对并返回这些对象的常规数组,但我希望尽可能不使用 PHP 脚本,因为其中有很多改变。

【问题讨论】:

    标签: java php json gson


    【解决方案1】:

    您可以使用TypeToken 类为fromJson 方法提供一个类型,所以它应该是这样的:

    public class Test {
        public static void main(String[] args) {
            String json ="{\"10 m\":10,\"100 m\":100,\"1000 m\":1000}";
            LinkedHashMap<String, Double> map = new Gson().fromJson(json, new TypeToken<LinkedHashMap<String, Double>>(){}.getType());
            System.out.println(map);
        }
    }
    

    哪个输出:

    {10 m=10.0, 100 m=100.0, 1000 m=1000.0}
    

    【讨论】:

    • 完美运行!谢谢!顺便说一句,我喜欢你个人资料中对 Linus 的引用。
    猜你喜欢
    • 2014-08-15
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2012-09-12
    • 2019-09-04
    • 1970-01-01
    • 2011-03-05
    相关资源
    最近更新 更多