0

MS-Access DB クエリから返された JSON 文字列を取得しようとしています。レコードセット ($rs) は問題ありませんが、レコードセット内のすべてのフィールドを知らずに、JSON を返すためにループしようとしています。以下は、私が欲しいものを返しますが、探しているもので[["aaa":"bbb","ccc":"ddd"]]はありません。[{ ... }]

    $num_columns = $rs->Fields->Count ();
//echo $num_columns . "<br>";

$arrColumns = array();
for ($i=0; $i < $num_columns; $i++) {
    $arrColumns[] = $rs->Fields($i);
}

$arrResult = array();

while (!$rs->EOF) {
    $arrRow = array();
    for ($i=0; $i < $num_columns; $i++) {
        $arrRow[] = $arrColumns[$i]->value;
    }
    $arrResult[] = $arrRow;
    $rs->MoveNext();
}
//var_dump($arrResult);
echo json_encode($arrResult);
//print_r($arrResult);

[アップデート]:

動的部分を達成しましたが、結果にはまだ問題があります。私は json_encode($Array)自分のJQueryで思い通りに結果を得ることができません。

$num_columns = $rs->Fields->Count ();
$arrColumns = array();

for ($i=0; $i < $num_columns; $i++) {
    $arrColumns[] = $rs->Fields($i);
    $newArr[] = $rs->Fields($i)->name; 
}

$arrResult = array();

while (!$rs->EOF) {
    $arrRow = array();
    for ($i=0; $i < $num_columns; $i++) {
       $arrRow[$newArr[$i]] = $arrColumns[$i]->value;
    }
    $arrResult[] = $arrRow;

    $rs->MoveNext();
}

echo $_GET['callback'] . '(' . json_encode($arrResult) . ')';

私の JSON は次のように返されます:[{"First":"John"},{"Last":"Doe"}] オブジェクトにラップされた配列。クライアント側で次のように処理できるように、オブジェクトまたは配列のいずれかを返す必要があります。{"First":"John"},{"Last":"Doe"}

    <script>
        $.getJSON('http://remote.domain.com/json.php?callback=?',function(res){
            alert('Results: '+res.Last);
        });
    </script>

私はそれが私の方法でありjson_encode($Array);、クラスを使用していないのではないかと思いますか?

4

2 に答える 2

0

形式で返したい場合は、値を配列からクラス[{...}]に変更する必要があります。$arrRow簡単にするために、次の使用を活用できますstdClass()

次のようなことを試してください:

while (!$rs->EOF) {
    $arrRow = array();

    $class = new stdClass();
    $class->field1 = $arrColumns[1]->value;
    $class->field2 = $arrColumns[2]->value;

    $arrRow[] = $arrColumns[$i]->value;

    $arrResult[] = $arrRow;
    $rs->MoveNext();
}

echo json_encode($arrResult);
于 2012-11-25T23:21:50.470 に答える
0

[["aaa":"bbb","ccc":"ddd"]] 有効なjson配列形式ではないため、含まれていません...仕様についてはJSON.ORGを参照してください

配列は次のように表す必要があります

ここに画像の説明を入力

ながらオブジェクト

ここに画像の説明を入力

あなたが持つことができるクローゼットは配列を持っています

[["aaa","bbb"]["ccc","ddd"]]
于 2012-11-25T23:31:28.027 に答える