将PHP关联数组传输到Java映射<;字符串,双>;使用JSON(GSON)

将PHP关联数组传输到Java映射<;字符串,双>;使用JSON(GSON),java,php,json,gson,Java,Php,Json,Gson,我使用PHP将JSON编码的关联数组返回给客户端。数组是通过循环MySQL数据库查询的结果集来构建的。为简单起见,与其显示返回结果集的所有代码,不如假设查询的一个可能输出在PHP中生成以下关联数组: $ResultRows = array( "10 m" => 10, "100 m" => 100, "1000 m" => 1000 ); echo json_encode($ResultRows); JSON_encode生成的JSON字符串如下所示

我使用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}
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);
    }
}
如您所见,它被编码为一个对象,每个键值对看起来都像一个属性名和值

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


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

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

{"10 m":10,"100 m":100,"1000 m":1000}
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);
    }
}

很好用!谢谢顺便说一句,我喜欢你在个人资料中引用莱纳斯的话。