从Json中提取值

时间:2014-08-31 11:33:57

标签: java regex json

我正在使用org.json.simple.JSon,我有一个JSON Array的JSON对象,如下所示:

{"longitude:":-1.0,"latitude:":1.0},
{"longitude:":1.0,"latitude:":1.0},
{"longitude:":1.0,"latitude:":-1.0},
{"longitude:":-1.0,"latitude:":-1.0}

我需要将经度和纬度的值提取到这样的列表中 [-1.0,1.0] [1.0,1.0]

有没有办法使用Json或使用正则表达式?

3 个答案:

答案 0 :(得分:0)

这很简单。只需从JSON字符串创建JSONArray,并在JSONObject的每个索引处获取JSONArray并获得所需的值。

注意:将字符串[...]括起来,使其成为有效的JSON字符串。

示例代码:

String json = "[{\"longitude:\":-1.0,\"latitude:\":1.0},{\"longitude:\":1.0,\"latitude:\":1.0}]";
JSONArray jsonArray = new JSONArray(json);

for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject jsonObject = jsonArray.getJSONObject(i);
    System.out.println("longitude:" + jsonObject.getDouble("longitude:"));
    System.out.println("latitude:" + jsonObject.getDouble("latitude:"));
}

有效的JSON字符串:(注意密钥中使用的冒号:

[
    {
        "longitude:": -1,
        "latitude:": 1
    },
    {
        "longitude:": 1,
        "latitude:": 1
    }
]

答案 1 :(得分:0)

尝试这样的事情(使用你需要的json.simple,但请注意,还有其他JSON Java库甚至可能更好):

import java.util.ArrayList;
import java.util.List;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class PrintJsonArray {

    public static void main(String[] args) throws ParseException {
        String s = "[{\"longitude:\":-1.0,\"latitude:\":1.0},{\"longitude:\":1.0,\"latitude:\":1.0},{\"longitude:\":1.0,\"latitude:\":-1.0},{\"longitude:\":-1.0,\"latitude:\":-1.0}]";
        JSONArray array = (JSONArray) new JSONParser().parse(s);
        List<String> l = new ArrayList<>();
        for (int i = 0; i < array.size(); i++) {
            JSONObject json = (JSONObject) array.get(i);
            double longitude = (double) json.get("longitude:");
            double latitude = (double) json.get("latitude:");
            l.add("[" + longitude + "," + latitude + "]");
        }
        System.out.println(l);
    }
}

请注意两件事:

  1. 为了使您提供的JSON成为有效的JSON,您需要添加&#39; [&#39;和&#39;]&#39;围绕你的JSON。
  2. 你有一个&#39;:&#39;在经度/纬度属性名称 - 不确定这是你的意思(但当然这只是装饰性的)......

答案 2 :(得分:0)

  ^.*?(?=longitude:":).*?(-?\d+\.\d+).*?(?=latitude:":).*?(-?\d+\.\d+).*$

试试这个。这会给你所有的价值。

参见演示。

http://regex101.com/r/sM9gJ5/1