1

Json:

[{"Name":"David Smith","ClaimNum":"123456789","Site":"SomeSite","ServiceDate":"2013-02-27","Program":"3","ServiceType":"168","ReportType":"ReportTypeHere","program":"Some Program 1","type":"ServiceTypeHere"},{"Name":"David Smith","ClaimNum":"123456789","Site":"SomeSite","ServiceDate":"2013-02-27","Program":"3","ServiceType":"168","ReportType":"ReportTypeHere","program":"Some Program 1","type":"ServiceTypeHere"}]

Javascript:

var obj = eval ("(" + jsonString+ ")");
var string;
for(i=0; i < obj.length; i++){
    string += obj[i].Name + " - " + obj[i].ClaimNum + " - " + obj[i].Site + " - " + obj[i].ServiceDate + " - " + obj[i].program + " - " + obj[i].type + "<br/>";
}

使用している古いWebブラウザーの一部はJSON.parseをサポートしていないため、JSON.parseの代わりにevalを使用しています:(

ただし、これは機能します。

    document.getElementById("results").innerHTML = string;

最初のエントリは次のとおりです。

undefinedDavid Smith

これは、jsonオブジェクトで長さを使用できないため、配列に変換する必要があるために発生することを読みました。私はevalがこれを行うと思いましたか?

私は途方に暮れていて、これにはストレートJavaScriptを使用したいと思います。ただし、他に方法がない場合は、JQUERYを使用できます。

助言がありますか?

4

1 に答える 1

3

の初期値はstringですがundefined、文字列化すると になり"undefined"ます。

つまりstring += obj[i].Name etc etcstring = "undefined" + obj[i].Name etc etc

string初期化するときに空の文字列を割り当てます。

var string = "";

これは、長さをjsonオブジェクトで使用できないため、配列に変換する必要があるためだと読みました。

「json オブジェクト」は非常に役に立たない用語です。

JSONオブジェクトは、解析メソッドとシリアル化メソッドを持つブラウザーによって提供されるオブジェクトです。

JSON テキストは、「オブジェクト」と誤認されることが多い JSON の一部です。

JSON のオブジェクトは、名前付きのキーと値を持つデータ構造です。

JSON テキストを JavaScript に解析すると (これは で行っていることですeval)、JavaScript データ構造が得られます。lengthオブジェクトのプロパティにアクセスする場合は、プロパティを指定しundefinedない限りアクセスできませんlength。外側のデータ構造は配列であり、それがループしているものです。配列にはプロパティがありlengthます (配列の最大の整数キー名の値に等しい)。

于 2013-03-04T19:56:02.883 に答える