1

我有一个在我的应用程序中使用的 json 数组,我在其他地方需要它,所以我必须保持这种方式。我将它保存在我的数据库中的一个表中,并在需要时对其进行反序列化。但现在我想做一个过滤一些数据的查询。

示例 json

[{"name":"SampleName","surname":"SampleSurname"}]

我希望能够做一个只给我“”内的字符串的正则表达式。就像我想要这个名字,它给了我没有引号的“SampleName”我怎么能做到这一点?

编辑!

当我需要使用它时,我已经解析了 JSON。我只是在我的数据列表上实现了一个过滤器,并希望直接从 SQL 过滤查询,而不必反序列化它。

所以我想做的是一个类似于以下内容的查询: select * from contacts where name like regexp'regexhere'并只取回与我的搜索匹配的名称。我知道我可以解析 json 并获得更好的结果,我想知道一个“更快”的替代方案

4

3 回答 3

1

在 java 中,您可以将正则表达式与模式匹配一​​起使用。

String result;
String str= "[{"+
      "name"+
      ":"
      +"SampleName"
      +","+
      "surname"+
      ":"+
      "SampleSurname"+
      "}]";
 String regex ="[a-zA-Z]+";//matches only characters from a-z or A-Z
 Matcher matcher = Pattern.compile( regex ).matcher( str);
 while (matcher.find( ))
 {
 result = matcher.group();     
 System.out.println(result);                 
 }
output
name
SampleName
surname
SampleSurname    
于 2012-10-08T09:43:57.303 回答
0

你真的应该解析 JSON。如果你不想自己动手,你可以使用像Jackson这样的库来实现这一点。

如果你这样做,一个正则表达式,如:

[^"]+[^"]+

会让你标记它,所以你可以自己滚动。

于 2012-10-08T09:12:10.657 回答
0

Android 中包含一个 JSON 解析器,它可以让您非常简单地做到这一点。你应该看看http://developer.android.com/reference/org/json/JSONTokener.html

希望这可以帮助!

于 2012-10-08T09:03:17.307 回答