繁体   English   中英

从json数组中删除引号

[英]Remove quotes from json array

我有以下问题:

我在Java中有一个ArrayList。

我将ArrayList转换为这样的字符串:

Gson gson = new Gson();
String feeds += gson.toJson(arrayList);

结果如下:

[{"status":"ERROR","position":"[48.2748206,8.849529799999999]"}]

但我需要以下输出:

[{"status":"ERROR","position": [48.2748206,8.849529799999999]}]

头寸价值不应带引号。 我怎么能意识到呢?

提前谢谢了

招呼

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

尝试使用正向后向和正向前向。

样例代码:

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"));

这是演示

我认为您不应该这样,也许您应该更改工作结构,但是如果您想手动键入内容,则可以这样做。 假设您有一个类似JSONArray的对象:

JSONArray arr=[{"status":"ERROR","position":"[48.2748206,8.849529799999999]"}];

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

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);

}

考虑使用Gson JsonWriter

    StringWriter buffer = new StringWriter();
    JsonWriter writer = new JsonWriter(buffer);
    writer.beginArray().beginObject();
    writer.name("status").value("ERROR");
    writer.name("position").beginArray();
    for (double value : Arrays.asList(48.2748206, 8.849529799999999)) {
        writer.value(value);
    }
    writer.endArray().endObject().endArray().close();
    String json = buffer.toString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM