我有一个带URL的字符串和其他一些“ JSON格式”的文本。像这样:
String result = "https://somesite.com/generic-url/11 {'id':11,'checked':true,'geo':'0'}"
我知道这很奇怪...但是我必须丢弃字符串中的URL,并将其余数据转换为JSONObject。
我该怎么做?
答案 0 :(得分:1)
在将JSON转换为JSONObject方面,有几个可用的库,我常用的两个是Google的GSON library和jackson-databind
就从字符串中提取JSON而言,您可以使用正则表达式来抓取第一个'{'及其后的所有内容作为捕获组的一部分,我希望这会起作用。 {
"_id" : "1",
"tipos" : [
{
"tipo" : "TIPO_01",
"total" : 13.0
},
{
"tipo" : "TIPO_02",
"total" : 2479.0
},
{
"tipo" : "TIPO_03",
"total" : 12445.0
},
{
"tipo" : "TIPO_04",
"total" : 12445.0
},
{
"tipo" : "TIPO_05",
"total" : 21.0
},
{
"tipo" : "TIPO_06",
"total" : 21590.0
},
{
"tipo" : "TIPO_07",
"total" : 1065.0
},
{
"tipo" : "TIPO_08",
"total" : 562.0
}
],
"totalGeneral" : 50620.0
之类的方法可能适用于您的情况。
以GSON为例:
^[^\{]*(.+)
答案 1 :(得分:1)
final String regex = ".*(\\{.*\\}$)";
final String string = "https://somesite.com/generic-url/11 {\"id\":11,\"checked\":true,\"geo\":\"0\"}";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
matcher.find();
String json = matcher.group(1);
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(json);
答案 2 :(得分:1)
public class Main {
public static void main(String[] args) {
String line = "https://somesite.com/generic-url/11 {'id':11,'checked':true,'geo':'0'}";
String pattern = "\\{.*\\}$";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find()) {
JSONObject json = new JSONObject(m.group(0));
System.out.println(json);
System.out.println(json.getLong("id"));
System.out.println(json.getBoolean("checked"));
System.out.println(json.getInt("geo"));
} else {
System.out.println("NO MATCH");
}
}
}
控制台输出:
{"geo":"0","checked":true,"id":11}
11
true
0