0

次のようなデータを含むテキスト フィールドがあります。

[{"id":10001,"timeStarted":1355729600733,"projectId":10002,"issueId":"29732,","userName":"tester","assignee":"test","status":"STARTED","shared":True,"name":"Session 4","projectName":"IDS","assigneeDisplayName":"First1 Last1"},
 {"id":10002,"timeStarted":1358354188010,"projectId":10002,"issueId":"","userName":"tester","assignee":"test","status":"CREATED","shared":True,"name":"asdf98798","projectName":"IDS","assigneeDisplayName":"First Last"}]

しかし、さらに多くの行があると、30 ~ 40 になり、さらに 2 つの異なるステータス (合計 4) になる可能性があります。

DB への読み取り専用アクセス権を持ち、MySQL クエリのみを使用して、ここからいくつかのデータを抽出することは可能ですか?

たとえば、ステータスが「Stated」およびステータスが「created」のアイテムの数をカウントするには、次のようにします。追加の条件が適用される場合があります。たとえば、id が一定の間隔内にある場合などです。

4

1 に答える 1

0

PHP を使用していると仮定すると、まず、これらの認識されないブール値を修正することをお勧めします。データを正しく評価するために、あるべき場所(代わりにPHPの場合)がTrueありtrueます TRUE

$jsStr = preg_replace_callback(
'~(?<=[,{[])(".+?"\s*:\s*)(true|false)(?=\s*[,}\]])~i',
create_function('$m','return $m[1].strtolower($m[2]);'),
$jsStr);

次に、関数を使用して処理できるようにしますjson_decode()

$parsed = json_decode($jsStr);
// see the result if you like:
// print_r($parsed);

最終的に、(Javascript を使用して) クライアント側で特定の情報を抽出したい場合は、Array filter() 関数を使用するか、jQuery を使用していない場合はループを使用できます。それ以外の場合は、必要な条件でjQueryfilter()関数を使用できます。

これを PHP で行う場合は、文字列が JSON に解析された後、Javascript に適用されるソリューションを使用できます。

于 2013-01-31T23:55:51.013 に答える