1

アプリケーションで使用するjson配列があり、その形式の他の場所で必要になるため、そのままにしておく必要があります。db内のテーブルに保存し、必要に応じて逆シリアル化します。しかし、ここで、そのデータの一部をフィルタリングするクエリを実行したいと思います。

サンプルjson

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

""内の文字列のみを表示する正規表現を実行できるようにしたいと思います。名前が欲しいのですが、引用符なしで「SampleName」が表示されます。どうすればそれを実現できますか?

編集!

JSONを使用する必要がある場合は、すでに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

JSON パーサーが Android に含まれているため、これを非常に簡単に行うことができます。http://developer.android.com/reference/org/json/JSONTokener.htmlをご覧ください。

お役に立てれば!

于 2012-10-08T09:03:17.307 に答える