【问题标题】:java gson json object array to string arrayjava gson json对象数组到字符串数组
【发布时间】:2016-08-07 11:28:13
【问题描述】:

我是 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字符串中可能包含多个数组,都需要转换。

【问题讨论】:

    标签: java gson


    【解决方案1】:

    你可以使用jsonarray来获取特定的字段

    你可以找到json apiJSON

    将 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
        }
    
     }
    
    }
    

    【讨论】:

    • 感谢帮助,问题是我需要能够将所有数组转换成字符串数组并且json字段名不固定。
    • 你可以检查返回的对象是数组实例然后转换为字符串数组检查这个链接stackoverflow.com/questions/2725533/…
    猜你喜欢
    • 2018-01-20
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    相关资源
    最近更新 更多