【问题标题】:Converting a JavaScript Array that's been JSON.stringify to a Java Array [duplicate]将 JSON.stringify 的 JavaScript 数组转换为 Java 数组 [重复]
【发布时间】:2015-08-04 14:15:12
【问题描述】:

您好,我正在尝试转换通过 JSON.stringify 方法后从我的 JavaScript 发送的数组。我目前正在试验/查看它的正则表达式解决方案,但任何返回正常 JAVA Array<Integer> 且“”之间的值都有效。

JAVA 代码:

private ArrayList<Integer> convertJSONArrayStringtoArray(String jsonArrayString){


     Matcher m = Pattern.compile(".*\\\"(.*)\\\".*").matcher(jsonArrayString);
     while(m.find()) {
       System.out.println("convertJSONtoArray: " + m.group(1));    
     } 

    return null;

}

字符串组合(注意字符串不是保存数组的JSON对象,只是一个简单的数组):

["12441","3324","11584","3337","25739","25810"]

【问题讨论】:

  • 有很多可用于 Java 的 JSON 解析器库。
  • 我不同意重复的问题,这个问题与链接的问题不同。它询问如何反序列化不是有效 JSON 的 js 数组,因此您不能直接通过 JSON 序列化器反序列化。

标签: java javascript arrays regex json


【解决方案1】:

使用Gson,您可以:

    List<String> result = new Gson().fromJson( jsonArrayString, List.class );

【讨论】:

    【解决方案2】:

    它是一次性的,你觉得使用整个库是多余的:

    String input = "[\"12441\",\"3324\",\"11584\",\"3337\",\"25739\",\"25810\"]";
    String[] tokens = input.substring(1, input.length()-2).split(",");
    List<Integer> ints = Arrays.asList(tokens).stream().map(s -> Integer.parseInt(s.substring(1, s.length()-1))).collect(Collectors.toList());
    

    【讨论】:

      猜你喜欢
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 2014-04-30
      • 2016-07-18
      • 2016-04-15
      • 2016-09-13
      • 2016-08-15
      相关资源
      最近更新 更多