2017-01-05 7 views
1

jsonストリングをvert.xのList<Foo>にデコードする方法を知っている人はいますか?Vert.x Json.decodeValueリスト

Json.decodeValue(data, Foo.class);で文字列をオブジェクトに簡単に変換することはできますが、リストの場合はそのようにすることはできません。

これまでのところ、私はJson.decodeValue(data, List.class);でデータを取り出しましたが、実際にプリントアウトしても何の結果も得られません。

+0

私はリストに 'Gson.fromJson' APIを使用しなければなりませんでした。 http://stackoverflow.com/questions/18544133/parsing-json-array-into-java-util-list-with-gson/18547661#18547661 –

答えて

1

をあなたは、コンテナオブジェクトを宣言する必要がありますが、そうでない場合、それは非常に簡単です:

// This is your Foo 
public class MyObj { 
    public String key; 

    // Just for clarity 
    @Override 
    public String toString() { 
     return "MyObj{" + 
       "key='" + this.key + '\'' + 
       '}'; 
    } 
} 

// This is the container 
public class MyArray { 
    // Property is mandatory in this case 
    @JsonProperty("objs") 
    List<MyObj> objs; 
} 

そして今、構文解析

public static void main(final String[] args) { 

    // Your input is a JSON array, not a JSON object 
    final String input = "[{\"key\":\"a\"}, {\"key\":\"b\"}, {\"key\":\"c\"}]"; 

    // We format it to be a JSON object, so we can parse it 
    final MyArray res = Json.decodeValue(String.format("{\"objs\":%s}", input), MyArray.class); 

    // Get your List out 
    System.out.println(res.objs); 
} 
0

Jsonクラスは、文字列をデコードするためにJacksonを使用します。

リストの代わりにFoo []を使用することをお勧めします。本当にリストが必要な場合は、簡単に "Arrays.asList(arr)"を作成できます。

か、このサイトでの例のいずれかを使用できます。http://www.baeldung.com/jackson-collection-array