我正在使用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或使用正则表达式?
答案 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);
}
}
请注意两件事:
答案 2 :(得分:0)
^.*?(?=longitude:":).*?(-?\d+\.\d+).*?(?=latitude:":).*?(-?\d+\.\d+).*$
试试这个。这会给你所有的价值。
参见演示。