3

PHP から JSON を取得中に問題が発生しました。以下のコードは動作します:

[{
        "vehicleId": "1",
        "status": "Running",
        "position": "x",
        "battery": "25",
        "distanceTravelled": "123",
        "destination": "y",
        "freeSeats": "2",
        "speed": "32"
    }
]

しかし、私のコードの新しいバージョンはそのようになり(数値の引用符なし)、解析Jsonエラーが発生し、何も表示されませんでした。

[{ 
        "vehicleId": 1,
        "status": "Running",
        "position": "x",
        "battery": 25,
        "distanceTravelled": 123,
        "destination": "y",
        "freeSeats": 2,
        "speed": 32
    }
]

jsonlint.com で形式を確認しましたが、有効です。Eclipse のログのエラーは次のとおりです。

05-09 21:37:25.536: E/Web Console(336): SyntaxError: Unable to parse JSON string at file:///android_asset/www/MobileMan.js:37

    34  xmlhttp.open("GET",url,false);
    35  xmlhttp.send();
    36  var json = xmlhttp.responseText; 
    37  obj = JSON.parse(json);

また、Chrome のコンピューターで Javascript コードを試してみましたが、すべて正常に動作します。問題を解決できませんでした。回答ありがとうございます。

4

1 に答える 1

0

パーサーがエラーをスローしている場合は、解析するために提供された値が純粋な JSON オブジェクトではないことを意味します。

JSON.parseについて

  • JSON.parse - 文字列を JSON として解析し、オプションで解析によって生成された値を変換します。解析する文字列が有効な JSON でない場合、SyntaxError 例外がスローされます。

一方、JSON.stringifyについては

  • JSON.stringify - 値を JSON に変換し、置換関数が指定されている場合はオプションで値を置き換え、置換配列が指定されている場合は指定されたプロパティのみをオプションで含めます。

したがって、あなたの場合、まず取得した結果を JSON オブジェクトに変換してから、それを解析する必要があります。

a = [{ 
        "vehicleId": 1,
        "status": "Running",
        "position": "x",
        "battery": 25,
        "distanceTravelled": 123,
        "destination": "y",
        "freeSeats": 2,
        "speed": 32
    }
];

var b = JSON.stringify(a);
var c = JSON.parse(b);
console.log(c)
于 2013-10-12T11:37:12.167 に答える