簡體   English   中英

將JsonArrayString轉換為列表 <String> 或String []

[英]Convert JsonArrayString to List<String> or String[]

如何將JsonArrayString轉換為List<String>String[] 我嘗試使用Gson進行隱蔽,但失敗了。 也許我忽略了一些可以做到這一點的現有方法? 還有其他更好的方法或者有人可以給我一些提示嗎?

[
    {
        "test": "test"
    },
    {
        "test": "test"
    },
    {
        "test": "test",
        "test2": "test2",
        "test3": [
            {
                "test": "test"
            },
            {
                "test": "test"
            }
        ]
    }
]

我猜你不知道該值是JSONObject還是JSONArray。 在這種情況下,您可能希望像這樣使用Map和Object作為Value(未經測試)。

class Model { 
  private Map<String, Object> test;
}

請注意,您必須使用以下方法(例如)驗證Value是JSONArray還是JSONObject:

if (this.getTest().getValue() instanceof JSONObject.class) { ... }

我終於找到了解決的方法:

    // Converting JSON String array to Java String array
    String jsonStringArray = "[{\"test\":\"test1\"},{\"test\":\"test2\"},{\"test\":\"test3\",\"test2\":[{\"test\":\"test1\"},{\"test\":\"test2\"}]}]";

    // creating Gson instance to convert JSON array to Java array
    Gson converter = new Gson();

    Type type = new TypeToken<List>() {
    }.getType();
    List list = converter.fromJson(jsonStringArray, type);

    // convert List to Array in Java

    System.out.println("Java List created from JSON String Array - example");
    System.out.println("JSON String Array : " + jsonStringArray);
    System.out.println("Java List : " + list);

    // let's now convert Java array to JSON array -
    String toJson = converter.toJson(list);
    System.out.println("Json array created from Java List : " + toJson);

輸出:

Java List created from JSON String Array - example
JSON String Array : [{"test":"test1"},{"test":"test2"},    
{"test":"test3","test2":[{"test":"test1"},{"test":"test2"}]}]
Java List : [{test=test1}, {test=test2}, {test=test3, test2=[{test=test1},   {test=test2}]}]
Json array created from Java List : [{"test":"test1"},{"test":"test2"},{"test":"test3","test2":[{"test":"test1"},{"test":"test2"}]}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM