将Google Spreadsheets json响应映射到Java对象会返回错误消息

时间:2018-08-17 14:14:50

标签: java json

我得到以下JSON输出:

{
  "range": "Frontpage!E6:E15",
  "majorDimension": "ROWS",
  "values": [
    [
      "FundRequest"
    ],
    [
      "nOS"
    ],
    [
      "NEX"
    ],
    [
      "DREP"
    ],
    [
      "ChromaWay"
    ],
    [
      "Jura"
    ],
    [
      "Origo"
    ],
    [
      "Phantasma"
    ],
    [
      "NuCypher"
    ],
    [
      "Oasis Labs"
    ]
  ]
}

所以我创建了以下包装:

public class Wrapper {

     private String range;
     private String majorDimension;
     private List<String> values;

     // getters and setters

}

现在,我想使用GsonBuilder将JSON映射到我的对象:

Gson gson = new GsonBuilder().create();
Wrapper w = gson.fromJson(jsonString, Wrapper.class);

但出现以下错误:

java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 37 path $.values[0]

我该如何解决?我有什么办法可以将其从List<List<String>>转换为List<String>

1 个答案:

答案 0 :(得分:3)

首先,您应该使用列表add_filter('rest_hotel_query', function($args, $request){ $myid = $request->get_param('myid'); if (!empty( $myid)) { $args['meta_query'] = array( array( 'key' => 'myid', 'value' => $myid, 'compare' => '=', ) ); } return $args; }, 10, 2 ); 而不是 add_filter('rest_hotel_collection_params', function ($valid_vars){ return array_merge($valid_vars, array('myid', 'meta_query')); }); 作为值。

第二秒,您可以使用以下代码从List<<List<String>>获得List<String>

List<String>

或使用Java-8

List<List<String>>

此外,在GSON中进行搜索是否有任何内置的方法来展平嵌套的集合。如有任何内容,请在此处发布。

编辑1:我在GSON库中进行了快速搜索,似乎有可能。您已经编写了一个适配器来实现这些功能。请参阅此link link2