0
{"smscresponse":{"calluid":"3333","to":"0000","event":"ABC"}}

我在用

split("{")[1]要得到"calluid":"3333","to":"0000","event":"ABC"

但我得到

Illegal repetition
{ error.

我想要的是老茧。我怎样才能得到那个。提前致谢...

4

4 回答 4

2

你可以逃避这个{角色,比如......

String text = "{\"smscresponse\": 
                 {\"calluid\":\"3333\",\"to\":\"0000\",\"event\":\"ABC\"}}";
String[] split = text.split("\\{");
System.out.println(split.length);
System.out.println(split[2]);

哪个输出...

3
"calluid":"3333","to":"0000","event":"ABC"}}

要获得“3333”,您可以执行类似...

split = split[2].split(":|,"); // Split on : or ,
System.out.println(split[1]);

哪个输出

"3333"

现在,如果你真的想变得聪明,你可以尝试类似...

String[] split = text.split("\\{|:|,|\\}");
for (String part : split) {
    System.out.println(part);
}

哪个输出

                // Note, this is an empty line
"smscresponse"
                // Note, this is an empty line
"calluid"
"3333"
"to"
"0000"
"event"
"ABC"

更新...

一个稍微好一点的解决方案可能是......

Pattern p = Pattern.compile("\"([^\"]*)\"");
Matcher m = p.matcher(text);
while (m.find()) {
    System.out.println(m.group());
}

哪个输出

"smscresponse"
"calluid"
"3333"
"to"
"0000"
"event"
"ABC"
于 2013-10-02T05:57:55.513 回答
1

尝试使用拆分input.split("[{]");

String abc = "{\"smscresponse\":{\"calluid\":\"3333\",\"to\":\"0000\",\"event\":\"ABC\"}}";
String[] splittedValue = abc.split("[{]");
for(String value : splittedValue)
  System.out.println(""+value);
于 2013-10-02T05:54:39.227 回答
0
String s = "{\"smscresponse\":{\"calluid\":\"3333\",\"to\":\"0000\",\"event\":\"ABC\"}}";
System.out.println(s.split("\\{")[2].split("}")[0]);

不要担心“\”。这将适用于您动态生成的数据。

编辑:这会让你“calluid”

System.out.println(s.split("\\{")[2].split("}")[0].split(",")[0]);
于 2013-10-02T06:04:05.330 回答
0

创建给定字符串的 JSON 对象并解析 JSON 对象以获取值。使用库org.json

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class JsonSimpleExample {
    public static void main(String[] args) {

        JSONParser parser = new JSONParser();

        try {

            JSONObject jsonObj = new JSONObject("{\"smscresponse\":{\"calluid\":\"3333\",\"to\":\"0000\",\"event\":\"ABC\"}}");

            String calluid = (String) jsonObject.get("smscresponse").getString("calluid");
            System.out.println(calluid);

            } catch (ParseException e) {
              e.printStackTrace();
            }
     }
}
于 2013-10-02T06:04:13.620 回答