从json数组中删除引号

时间:2014-07-16 11:58:30

标签: java json gson arrays

我有以下问题:

我在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]}]

头寸的价值应该没有引号。我怎么能意识到这一点?

非常感谢提前

迎接

3 个答案:

答案 0 :(得分:4)

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

尝试积极的外观和积极的前瞻。

示例代码:

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

这是DEMO


尝试分组和替换。

示例代码:

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

这是DEMO

答案 1 :(得分:0)

我认为你不应该这样,可能你应该改变你的工作结构,但如果你想手动进行类型转换,那么你可以这样做。 假设你有一个像这样的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);

}

答案 2 :(得分:0)

考虑使用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();