【问题标题】:convert json string to java string array将json字符串转换为java字符串数组
【发布时间】:2017-08-23 10:26:51
【问题描述】:

我在 serlvet 控制器中得到一个 ["A","B","C","D","E"] 的 json 字符串。

我想将此字符串转换为 Java 字符串数组。 Json 字符串还包括 []。

输出应该是一个Java字符串数组:

arr[0] = A
arr[1] = B 

等等。您能否提出一个解析解决方案?

【问题讨论】:

    标签: java arrays json parsing


    【解决方案1】:

    使用流你可以像这样转换它:

    String s = "[\"A\",\"B\",\"C\",\"D\",\"E\"]";
    String[] arr = Arrays.stream(s.substring(1, s.length()-1).split(","))
                    .map(e -> e.replaceAll("\"", ""))
                    .toArray(String[]::new);
    

    您还可以使用 JSON 库(这可能是首选方式)。例如使用杰克逊:

    String s = "[\"A\",\"B\",\"C\",\"D\",\"E\"]";
    ObjectMapper mapper = new ObjectMapper();
    String[] arr = mapper.readValue(s, String[].class);
    

    【讨论】:

    • 在您的设备上解析 JSON 在安全性方面存在风险(尤其是在 Web 环境中)。只需使用著名的 JSON 库之一,例如 GSONJackson 等。
    • 对@jannis,添加了一个杰克逊的例子
    【解决方案2】:
    ArrayList<String> jsonStringToArray(String jsonString) throws JSONException {
    
        ArrayList<String> stringArray = new ArrayList<String>();
    
        JSONArray jsonArray = new JSONArray(jsonString);
    
        for (int i = 0; i < jsonArray.length(); i++) {
            stringArray.add(jsonArray.getString(i));
        }
    
        return stringArray;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多