java gson json对象数组到字符串数组

时间:2016-08-07 11:28:13

标签: java gson

我是JAVA的初学者,正在使用gson库转换类似这样的JSON字符串:

String json = "{\"Report Title\": \"Simple Embedded Report Example with Parameters\",\"Col Headers BG Color\": \"yellow\",\"Customer Names\":[\"American Souvenirs Inc\",\"Toys4GrownUps.com\",\"giftsbymail.co.uk\",\"BG&E Collectables\",\"Classic Gift Ideas, Inc\"]}";
Gson gson = new Gson();
jsonObject (Map) = gson.fromJson(json, Object.class);

但问题是我需要"客户名称"要作为字符串数组而不是对象数组返回的数组。

gson可以这样做,还是必须先通过某种方式检测类型(数组)然后循环遍历每个元素将其转换为字符串数组并替换对象数组?

添加的问题是JSON字段名称不固定,JSON字符串中可能包含多个数组,并且所有数组都需要转换。

1 个答案:

答案 0 :(得分:0)

您可以使用jsonarray获取特定字段

你可以找到json api JSON

将json文本添加到文件中,或者您可以使用缓冲区传递给参数

String json = "{\"customer_names\" : [...]}";   

然后

JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("test.json"));

    JSONObject jsonObject = (JSONObject) obj;
         JSONArray msg = (JSONArray) jsonObject.get("Customer Names");
            Iterator<String> iterator = msg.iterator();
            while (iterator.hasNext()) {
                    System.out.println(iterator.next());
            }

或者您可以使用类似这样的GSON

public class JsonPojo {
private String[] customer_names;
public String[] getCustomerNames(){ return this.customer_names;}
}


public class App{

 public static main(String[] args) {

 Gson gson = new Gson();
    JsonPojo thing = gson.fromJson(json, JsonPojo.class);
    if (thing.getCustomerNames()!= null)
    {
      // do what you want
    }

 }

}