2012-05-08 8 views
24

Tôi đang sử dụng Gson và đang cố gắng để thêm một loạt các giá trị chuỗi thành một JsonArray như thế này:Gson mảng của Strings để JsonArray

JsonArray jArray = new JsonArray(); 
jArray.add("value1"); 

Vấn đề là phương thức add chỉ mất một JsonElement.

Tôi đã cố gắng truyền một chuỗi thành JsonElement nhưng điều đó không hiệu quả.

Làm cách nào để thực hiện việc này bằng Gson?

Trả lời

61

Bạn có thể tạo một nguyên thủy mà sẽ chứa String value và thêm nó vào mảng:

JsonArray jArray = new JsonArray(); 
JsonPrimitive element = new JsonPrimitive("value1"); 
jArray.add(element); 
+6

Tại sao lại như vậy ** ludicrously ** phản trực giác? – allidoiswin

+0

Và tại sao các tài liệu cho chúng tôi biết có một JsonArray.add (String)?!? –

3

Có vẻ như bạn nên tạo new JsonPrimitive("value1") và thêm điều đó. Xem The javadoc

0

Tôi đã hy vọng cho một cái gì đó như thế này bản thân mình:

JsonObject jo = new JsonObject(); 
jo.addProperty("strings", new String[] { "value1", "value2" }); 

Nhưng tiếc isn rằng không được GSON hỗ trợ nên tôi đã tạo trình trợ giúp này:

public static void Add(JsonObject jo, String property, String[] values) { 
    JsonArray array = new JsonArray(); 
    for (String value : values) { 
     array.add(new JsonPrimitive(value)); 
    } 
    jo.add(property, array); 
} 

Và sau đó sử dụng nó như vậy:

JsonObject jo = new JsonObject(); 
Add(jo, "strings", new String[] { "value1", "value2" }); 

Thì đấy!

1

Đối với phiên bản mới hơn của thư viện gson, giờ đây chúng tôi cũng có thể thêm Chuỗi. Nó cũng đã mở rộng hỗ trợ cho việc thêm Boolean, Character, Số, vv

https://static.javadoc.io/com.google.code.gson/gson/2.6.2/com/google/gson/JsonArray.html#add-java.lang.String-

Sử dụng các công trình này đối với tôi bây giờ:

JsonArray msisdnsArray = new JsonArray(); 
     for(String msisdn : msisdns) { 
      msisdnsArray.add(msisdn); 
     }