java - 为什么原始数组不允许添加到 GSON 中的 JSON 结构

标签 java json gson

我想这样做来创建一个如下所示的 json 对象。

JsonObject      request             = new JsonObject();
request.addProperty("requestid", UUID.randomUUID().toString());
request.addProperty("type", "hotel");
request.addProperty("markups", new double[]{1.0,2.0,3.0}); // This says "The method addProperty(String, String) in the type JsonObject is not applicable for the arguments (String, double[])"
request.add("markups", new double[]{1.0,2.0,3.0});// This says "The method add(String, JsonElement) in the type JsonObject is not applicable for the arguments (String, double[])"

JSON 对象:

{
  "requestid": "05afcd81-9c59-4a21-a61e-ae48fda6bdd0",
  "type": "hotel",
  "markups": [1.0,2.0,3.0]
}

请注意,这不是关于 fromJson 和 toJson 的事情。它是 JSON 创建和读取对象而不是转换。 那么,我该如何使用上述实现呢。

最佳答案

由于您想使用解析树对象来构建您的 JSON 结构,您需要实例化并将值添加到 JsonArray 对象,或者使用 Gson 并转换您的 double[ ]。我假设您宁愿选择后者:

public static void main( String[] args ) 
{
    double[] d = new double[] { 1.0, 2.0};
    JsonElement e = new Gson().toJsonTree(d);
    JsonObject o = new JsonObject();
    o.add("array", e);
    System.out.println(o);
}

输出:

{"array":[1.0,2.0]}

toJsonTree() 方法获取您的 Java 数组并将其转换为 Gson 解析树 JsonArray 并将其作为父类(super class) JsonElement 返回

关于java - 为什么原始数组不允许添加到 GSON 中的 JSON 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21965469/

相关文章:

java - wsgen:返回一个抽象类

javascript - 无法使用数据表和免费编辑器编辑/创建/删除表中的元素

json - 在 Go Lang 中使用深度嵌套的 JSON

java - 在不知道 JSON 结构的情况下解析 Java 中的嵌套 JSON

java - 使用 Gson 创建 JSON 时 POJO 中黑色字段的影响

java - 反序列化更改内部节点的 JSON

java - `SqlProvider` 如何在 `MyBatis` 中获取超过 1 个参数?

java - 选择 facebook 按钮 webdriver java

java - 基于String的调用方法

jquery - 使用 jQuery 加载 JSON 时 IE9 的行为非常奇怪