Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,如何将方括号中的字符串转换为大量的双精度字符串?_Java_Json - Fatal编程技术网

在Java中,如何将方括号中的字符串转换为大量的双精度字符串?

在Java中,如何将方括号中的字符串转换为大量的双精度字符串?,java,json,Java,Json,我想知道如何将Jsonarray中的字符串(如下面代码中的字符串)转换为double列表 String lineStringJsonArray = "[[[0.093493,51.6037],[0.092077,51.6134],[0.075051,51.6179],[-0.247248,51.5166],[-0.259754,51.5235],[-0.28098,51.518],[-0.301457,51.515]]]" 我应该如何使用模式删除这些方括号?使用 使用JSONArray对象,该

我想知道如何将Jsonarray中的字符串(如下面代码中的字符串)转换为double列表

String lineStringJsonArray = "[[[0.093493,51.6037],[0.092077,51.6134],[0.075051,51.6179],[-0.247248,51.5166],[-0.259754,51.5235],[-0.28098,51.518],[-0.301457,51.515]]]"
我应该如何使用模式删除这些方括号?

使用

使用
JSONArray
对象,该对象返回一个对象数组,如要迭代的对象。我已经编译了一个打印数组中所有双精度的示例,如果您需要的话

String lineStringJsonArray = "[[[0.093493,51.6037],[0.092077,51.6134],[0.075051,51.6179],[-0.247248,51.5166],[-0.259754,51.5235],[-0.28098,51.518],[-0.301457,51.515]]]";
JSONParser parser = new JSONParser();
try {
    JSONArray arrays3 = (JSONArray) parser.parse(lineStringJsonArray);
    JSONArray arrays2 = (JSONArray) arrays3.get(0);
    for (Object items : arrays2) {
        for (Object item : (JSONArray) items) {
            System.out.println((Double) item);
        }
    }
} catch (ParseException e) {
    e.printStackTrace();
}
使用

使用
JSONArray
对象,该对象返回一个对象数组,如要迭代的对象。我已经编译了一个打印数组中所有双精度的示例,如果您需要的话

String lineStringJsonArray = "[[[0.093493,51.6037],[0.092077,51.6134],[0.075051,51.6179],[-0.247248,51.5166],[-0.259754,51.5235],[-0.28098,51.518],[-0.301457,51.515]]]";
JSONParser parser = new JSONParser();
try {
    JSONArray arrays3 = (JSONArray) parser.parse(lineStringJsonArray);
    JSONArray arrays2 = (JSONArray) arrays3.get(0);
    for (Object items : arrays2) {
        for (Object item : (JSONArray) items) {
            System.out.println((Double) item);
        }
    }
} catch (ParseException e) {
    e.printStackTrace();
}

如果您想解码这个JSON字符串,我建议您使用Jackson库()。你可以在谷歌上找到关于如何导入和使用它的帮助

那么要使用的类应该如下所示:

public class AwesomeClassName extends ArrayList<ArrayList<ArrayList<Double>>> {

}
公共类AwesomeClassName扩展了ArrayList{
}

请询问您是否需要帮助。

如果您想解码此JSON字符串,我建议您使用Jackson library()。你可以在谷歌上找到关于如何导入和使用它的帮助

那么要使用的类应该如下所示:

public class AwesomeClassName extends ArrayList<ArrayList<ArrayList<Double>>> {

}
公共类AwesomeClassName扩展了ArrayList{
}

请询问您是否需要帮助。

促进重用,我更喜欢@ReutSharabani的答案。然而,对于原始问题,要使用
模式
,这里有另一个解决方案:

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Play {
  static class Pair<T> { 
    T v1,v2; 
    Pair(T v1,T v2) { this.v1 = v1; this.v2 = v2; } 
    @Override public String toString() {
      return "(X: "+v1+", Y: "+v2+")";
    }
  }
  public static void main(String args[]) { 
    List<Pair<Double>> l = new ArrayList<>();
    Pattern p = Pattern.compile("\\[([^\\[\\],]*),([^\\[\\],]*)]");
    Matcher m = p.matcher("[[[0.093493,51.6037],[0.092077,51.6134],[0.075051,51.6179],[-0.247248,51.5166],[-0.259754,51.5235],[-0.28098,51.518],[-0.301457,51.515]]]");
    while (m.find()) {
      String v1 = m.group(1);
      String v2 = m.group(2);
      l.add(new Pair<>(Double.valueOf(v1),Double.valueOf(v2)));
    }
    l.stream().map(Pair::toString).forEach(System.out::println);
  }
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公演{
静态类对{
T v1,v2;
配对(T v1,T v2){this.v1=v1;this.v2=v2;}
@重写公共字符串toString(){
返回“(X:+v1+”,Y:+v2+”;
}
}
公共静态void main(字符串args[]){
列表l=新的ArrayList();
Pattern p=Pattern.compile(“\\[([^\\[\],]*),([^\\[\],]*)”;
Matcher m=p.Matcher(“[[0.093493,51.6037],[0.092077,51.6134],[0.075051,51.6179],-0.247248,51.5166],-0.259754,51.5235],-0.28098,51.518],-0.301457,51.515]”;
while(m.find()){
字符串v1=m组(1);
字符串v2=m.group(2);
l、 添加(新对(Double.valueOf(v1)、Double.valueOf(v2));
}
l、 stream().map(Pair::toString).forEach(System.out::println);
}
}

促进重用,我更喜欢@ReutSharabani的答案。然而,对于原始问题,要使用
模式
,这里有另一个解决方案:

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Play {
  static class Pair<T> { 
    T v1,v2; 
    Pair(T v1,T v2) { this.v1 = v1; this.v2 = v2; } 
    @Override public String toString() {
      return "(X: "+v1+", Y: "+v2+")";
    }
  }
  public static void main(String args[]) { 
    List<Pair<Double>> l = new ArrayList<>();
    Pattern p = Pattern.compile("\\[([^\\[\\],]*),([^\\[\\],]*)]");
    Matcher m = p.matcher("[[[0.093493,51.6037],[0.092077,51.6134],[0.075051,51.6179],[-0.247248,51.5166],[-0.259754,51.5235],[-0.28098,51.518],[-0.301457,51.515]]]");
    while (m.find()) {
      String v1 = m.group(1);
      String v2 = m.group(2);
      l.add(new Pair<>(Double.valueOf(v1),Double.valueOf(v2)));
    }
    l.stream().map(Pair::toString).forEach(System.out::println);
  }
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公演{
静态类对{
T v1,v2;
配对(T v1,T v2){this.v1=v1;this.v2=v2;}
@重写公共字符串toString(){
返回“(X:+v1+”,Y:+v2+”;
}
}
公共静态void main(字符串args[]){
列表l=新的ArrayList();
Pattern p=Pattern.compile(“\\[([^\\[\],]*),([^\\[\],]*)”;
Matcher m=p.Matcher(“[[0.093493,51.6037],[0.092077,51.6134],[0.075051,51.6179],-0.247248,51.5166],-0.259754,51.5235],-0.28098,51.518],-0.301457,51.515]”;
while(m.find()){
字符串v1=m组(1);
字符串v2=m.group(2);
l、 添加(新对(Double.valueOf(v1)、Double.valueOf(v2));
}
l、 stream().map(Pair::toString).forEach(System.out::println);
}
}

开始前先看一下这个问题:另外,请阅读如何格式化问题中的代码,以使其他人更容易阅读:)在我看来,它就像一个非常简单的
双[][][]
,任何映射程序都应该处理这个问题。更有用的可能是
List
,因为它们看起来像纬度/经度对。您的双元组列表更像是双元组列表,或者更具体地说是双元组列表。此外,它似乎是一个额外的水平深(清单清单清单双对)。感谢所有的评论!实际上,我想使用一个模式将这对经纬度提取到一个经纬度列表中。有人能帮忙吗?先看一下这个问题:另外,请阅读如何格式化问题中的代码以使其他人更容易阅读:)对我来说,看起来像一个非常简单的
双[][][]
,任何映射程序都应该处理这个问题。更有用的可能是
List
,因为它们看起来像纬度/经度对。您的双元组列表更像是双元组列表,或者更具体地说是双元组列表。此外,它似乎是一个额外的水平深(清单清单清单双对)。感谢所有的评论!实际上,我想使用一个模式将这对经纬度提取到一个经纬度列表中。有人能帮忙吗?非常感谢,很抱歉我的表情可能会引起一些混乱。实际上,我想使用模式来提取这些纬度/经度对,并将它们添加到列表中。非常感谢,很抱歉,我的表达式可能会引起一些混乱。实际上,我想使用模式来提取这些纬度/经度对,并将它们添加到列表中。谢谢您的帮助!顺便问一下,你能告诉我如何使用模式提取这对经纬度吗?因为我想提取这对纬度/经度,并将它们全部添加到列表中。谢谢您的帮助!顺便问一下,你能告诉我如何使用模式提取这对经纬度吗?因为我想提取这对纬度/经度,并将它们全部添加到列表中。