我正在使用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<String, Double>实例。但是,由于它不是像数组那样编码的,所以我很难理解如何使用GSON对此进行解码。有任何想法吗?

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

最佳答案

您可以使用fromJson类为TypeToken方法提供一种类型,因此如下所示:

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}

09-10 11:40
查看更多