2010-10-14 76 views
1

我有一个像这样的字符串。数组解析的字符串

{"type":"broad","Text":"cat"},{"type":"broad","Text":"dog"}

String[] keyString = getParts({"type":"broad","Text":"cat"},{"type":"broad","Text":"dog"}); 
for(String part : keyString){ 
    some code here which gives like this 
    String text = "cat"; 
    String type = "broad"; 
} 

有没有人告诉我,我怎么能得到文字和字符串

public static String[] getParts(String keyString) { 
    if(keyString.isEmpty()) 
    return null; 
    String[] parts = keyString.split(","); 
    return parts; 
} 

或者有没有简单的方法来获得相应的字符串对类型。

回答

3

这看起来像JSON,所以如果你有/创建带有字段typeText一类,你可以使用gsonJackson解析字符串并获得该类的对象。 (您仍然可以使用split(",")分割字符串,并分析每个部分作为单独的JSON字符串)

+0

的一个问题但是,该数组不会以'[',']'开始或结束。 – 2010-10-14 12:27:35

+0

你是对的它是JSON字符串。最初我有这样的JSONstring JSONString = [{“type”:“broad”,“Text”:“cat”},{“type”:“broad”,“Text”:“dog”}]在执行以下JSONArray arrayKey = new JSONArray(JSONString); arraykey = {“type”:“broad”,“Text”:“cat”},{“type”:“broad”,“Text”:“dog”} – jimmy 2010-10-14 12:32:25

+0

@salman:然后使用JSON解析器,为了工作。 – 2010-10-14 12:40:23

2

这应该做的伎俩:

import java.util.regex.*; 

public class Test { 

    public static void main(String[] args) { 

     String input = "{\"type\":\"broad\",\"Text\":\"cat\"}," + 
         "{\"type\":\"broad\",\"Text\":\"dog\"}"; 

     System.out.println(input); 

     Pattern partPattern = Pattern.compile("\\{([^}]*)\\}"); 
     Pattern typePattern = Pattern.compile("\"type\":\"([^\"]*)\""); 
     Pattern textPattern = Pattern.compile("\"Text\":\"([^\"]*)\""); 

     Matcher m = partPattern.matcher(input); 
     while (m.find()) { 
      Matcher typeMatcher = typePattern.matcher(m.group(1)); 
      Matcher textMatcher = textPattern.matcher(m.group(1)); 

      String type = typeMatcher.find() ? typeMatcher.group(1) : "n/a"; 
      String text = textMatcher.find() ? textMatcher.group(1) : "n/a"; 

      System.out.println(type + ", " + text); 
     } 
    } 
} 

输出ideone link):

{"type":"broad","Text":"cat"},{"type":"broad","Text":"dog"} 
broad, cat 
broad, dog 
+1

使用RegExp的+1 – 2010-10-14 12:28:01