如何使用大括号在java中拆分以下字符串

时间:2013-10-02 05:52:18

标签: java regex string split

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

我正在使用

split("{")[1]获取"calluid":"3333","to":"0000","event":"ABC"

但我得到了

Illegal repetition
{ error.

我想要的是大流量。我怎么能得到那个。 提前谢谢......

4 个答案:

答案 0 :(得分: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"

答案 1 :(得分:1)

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

进行拆分
String abc = "{\"smscresponse\":{\"calluid\":\"3333\",\"to\":\"0000\",\"event\":\"ABC\"}}";
String[] splittedValue = abc.split("[{]");
for(String value : splittedValue)
  System.out.println(""+value);

答案 2 :(得分:0)

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

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

编辑:这会让你“流淌”

System.out.println(s.split("\\{")[2].split("}")[0].split(",")[0]);

答案 3 :(得分: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();
            }
     }
}