/ /私のPhoneGapプロジェクトでJSON文字列エラーを解析できません - javascript、android、json、cordova

PhoneGapプロジェクトのJSON文字列エラーを解析できません - javascript、android、json、cordova

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コードを試してみました、そして、すべてはうまく働きます。問題を解決できませんでした。ご回答いただきありがとうございます。

回答:

回答№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)