我使用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并创建一个包含Key / Value对的简单对象并返回这些对象的常规数组,但我希望尽可能单独保留PHP脚本,因为它们中有很多改变。
答案 0 :(得分:2)
您可以使用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}