Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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 从json数组中删除引号_Java_Json_Gson_Arrays - Fatal编程技术网

Java 从json数组中删除引号

Java 从json数组中删除引号,java,json,gson,arrays,Java,Json,Gson,Arrays,我有以下问题: 我有一个Java的ArrayList 我将ArrayList转换为如下字符串: Gson gson = new Gson(); String feeds += gson.toJson(arrayList); JSONArray arr=[{"status":"ERROR","position":"[48.2748206,8.849529799999999]"}]; Iterator iterator = array.iterator(); while(iterator.ha

我有以下问题:

我有一个Java的ArrayList

我将ArrayList转换为如下字符串:

Gson gson = new Gson();
String feeds += gson.toJson(arrayList);
JSONArray arr=[{"status":"ERROR","position":"[48.2748206,8.849529799999999]"}];
Iterator iterator = array.iterator();

while(iterator.hasNext()){
    Gson gson = new Gson();
    ClassToCastInto obj = gson.fromJson((JsonElement)iterator.next();, ClassToCastInto.class);
    System.out.println(obj.someProperty);

}
结果是:

[{"status":"ERROR","position":"[48.2748206,8.849529799999999]"}]
但我需要以下输出:

[{"status":"ERROR","position": [48.2748206,8.849529799999999]}]
position的值应不带引号。我怎么能意识到这一点

非常感谢


问候

我认为你不应该这样做,也许你应该改变你的工作结构,但如果你确实想手动打字,那么你可以这样做。 假设您有一个JSONArray对象,如下所示:

Gson gson = new Gson();
String feeds += gson.toJson(arrayList);
JSONArray arr=[{"status":"ERROR","position":"[48.2748206,8.849529799999999]"}];
Iterator iterator = array.iterator();

while(iterator.hasNext()){
    Gson gson = new Gson();
    ClassToCastInto obj = gson.fromJson((JsonElement)iterator.next();, ClassToCastInto.class);
    System.out.println(obj.someProperty);

}
然后您可以像这样取出JSONObject:

Gson gson = new Gson();
String feeds += gson.toJson(arrayList);
JSONArray arr=[{"status":"ERROR","position":"[48.2748206,8.849529799999999]"}];
Iterator iterator = array.iterator();

while(iterator.hasNext()){
    Gson gson = new Gson();
    ClassToCastInto obj = gson.fromJson((JsonElement)iterator.next();, ClassToCastInto.class);
    System.out.println(obj.someProperty);

}

我不认为你应该这样做,也许你应该改变你的工作结构,但如果你真的想手工打字,那么你可以这样做。 假设您有一个JSONArray对象,如下所示:

Gson gson = new Gson();
String feeds += gson.toJson(arrayList);
JSONArray arr=[{"status":"ERROR","position":"[48.2748206,8.849529799999999]"}];
Iterator iterator = array.iterator();

while(iterator.hasNext()){
    Gson gson = new Gson();
    ClassToCastInto obj = gson.fromJson((JsonElement)iterator.next();, ClassToCastInto.class);
    System.out.println(obj.someProperty);

}
然后您可以像这样取出JSONObject:

Gson gson = new Gson();
String feeds += gson.toJson(arrayList);
JSONArray arr=[{"status":"ERROR","position":"[48.2748206,8.849529799999999]"}];
Iterator iterator = array.iterator();

while(iterator.hasNext()){
    Gson gson = new Gson();
    ClassToCastInto obj = gson.fromJson((JsonElement)iterator.next();, ClassToCastInto.class);
    System.out.println(obj.someProperty);

}

使用
String#replaceAll()
方法替换位置值周围的双引号。只需创建一个正则表达式并用空的sting替换双引号

试着用积极的向后看和积极的向前看

示例代码:

String json = "[{\"status\":\"ERROR\",\"position\":\"[48.2748206,8.849529799999999]\"}]";
String regex = "(?<=\"position\":)\"|\"(?=\\}\\])";
System.out.println(json.replaceAll(regex, ""));
String json = "[{\"status\":\"ERROR\",\"position\":\"[48.2748206,8.849529799999999]\"}]";
String regex = "(\"position\":)\"([^\"]*)\"";
System.out.println(json.replaceAll(regex, "$1$2"));

下面是使用
String#replaceAll()
方法替换位置值周围的双引号。只需创建一个正则表达式并用空的sting替换双引号

试着用积极的向后看和积极的向前看

示例代码:

String json = "[{\"status\":\"ERROR\",\"position\":\"[48.2748206,8.849529799999999]\"}]";
String regex = "(?<=\"position\":)\"|\"(?=\\}\\])";
System.out.println(json.replaceAll(regex, ""));
String json = "[{\"status\":\"ERROR\",\"position\":\"[48.2748206,8.849529799999999]\"}]";
String regex = "(\"position\":)\"([^\"]*)\"";
System.out.println(json.replaceAll(regex, "$1$2"));
以下是

考虑使用Gson:

考虑使用Gson:


所以你想要引号中的错误,但是没有它们的位置,我认为这是不可能的。您可以随时删除引号,或者根据需要将其转换为position(自定义)对象。是的,这就是我想要的。正如我所提到的,您必须手动删除position value中的引号,并转换为您想要的某个对象。不能直接用gson,我不明白。你能举个例子吗?值必须以JSON数组而不是字符串开始。在源ArrayList中,它显然是一个字符串。因此,您希望引号中出现错误,但如果没有引号,则位置不正确,我认为这是不可能的。您可以随时删除引号,或者根据需要将其转换为position(自定义)对象。是的,这就是我想要的。正如我所提到的,您必须手动删除position value中的引号,并转换为您想要的某个对象。不能直接用gson,我不明白。你能举个例子吗?值必须以JSON数组而不是字符串开始。在源数组列表中,它显然是一个字符串。就是这样!!!非常感谢:-)最后一个问题:如果输出如下:[{“status”:“ERROR”,“position”:“[48.2748206,8.8495297999999],“entityType”:“hello”}]?检查第二个选项,该选项查找position值的双引号。在Demost中测试,就是这样!!!非常感谢:-)最后一个问题:如果输出如下:[{“status”:“ERROR”,“position”:“[48.2748206,8.8495297999999],“entityType”:“hello”}]?检查第二个选项,该选项查找position值的双引号。演示测试