JSオブジェクトを使用して、Googleビジュアライゼーションでグラフを作成しています。データソースを設計しようとしています。最初に、クライアント側でJSオブジェクトを作成しました。
var JSONObject = {
cols: [{id: 'date', label: 'Date', type: 'date'},
{id: 'soldpencils', label: 'Sold Pencils', type: 'number'},
{id: 'soldpens', label: 'Sold Pens', type: 'number'}],
rows: [{c:[{v: new Date(2008,1,1),f:'2/1/2008'},{v: 30000}, {v: 40645}]},
{c:[{v: new Date(2008,1,2),f:'2/2/2008'},{v: 14045}, {v: 20374}]},
{c:[{v: new Date(2008,1,3),f:'2/3/2008'},{v: 55022}, {v: 50766}]}]
};
var data = new google.visualization.DataTable(JSONObject, 0.5);
次に、データを動的に取得する必要があります。そこで、JSON文字列を返すページにAJAXリクエストを送信します。
"cols: [{id: 'date', label: 'Date', type: 'date'},
{id: 'soldpencils', label: 'Sold Pencils', type: 'number'},
{id: 'soldpens', label: 'Sold Pens', type: 'number'}],
rows: [{c:[{v: new Date(2008,1,1),f:'2/1/2008'},{v: 30000}, {v: 40645}]},
{c:[{v: new Date(2008,1,2),f:'2/2/2008'},{v: 14045}, {v: 20374}]},
{c:[{v: new Date(2008,1,3),f:'2/3/2008'},{v: 55022}, {v: 50766}]}"
これを変数に保存します:
var var1 = "cols: [{i ....... 66}]}"
として表示
alert(var1);
今、私の仕事はこの文字列からJSオブジェクトを作成することです。これは機能していません。 JSオブジェクトを使用すると、すべてが正常に機能し、必要なグラフを取得できます。これで、アラートメッセージから確認したAJAXリクエストから同じ値の文字列をnオブジェクトに入れようとすると、オブジェクトが正しく作成されません。あなたの意見と訂正やアドバイスを教えてください。
一部の最新のブラウザは、JSONをネイティブオブジェクトに解析するためのサポートを備えています。
var var1 = '{"cols": [{"i" ....... 66}]}';
var result = JSON.parse(var1);
サポートしていないブラウザの場合、JSONオブジェクトの安全な解析のために json.org からjson2.jsをダウンロードできます。スクリプトはネイティブJSONサポートをチェックし、サポートされていない場合は、代わりにJSONグローバルオブジェクトを提供します。より高速なネイティブオブジェクトが利用可能な場合、スクリプトをそのまま終了します。ただし、有効なJSONを指定する必要があります。そうしないと、エラーがスローされます。JSONの有効性は http://jslint.com または http://jsonlint.comで確認できます。 。
あなたの質問の文字列は有効なjson文字列ではありません。 json.orgウェブサイト から:
JSONは2つの構造で構築されます。
* A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array. * An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence.
基本的に、json文字列は常に{または[で始まります。
その後、@ Andy Eと@Cryoが言ったように、json2.jsまたは他のライブラリで文字列を解析できます。
私見evalはjavascriptプログラムであるため、evalを避ける必要があります。したがって、セキュリティの問題が発生する可能性があります。
文字列内のデータを信頼する場合は、eval(jsonString)を使用できます。そうでない場合は、適切に解析する必要があります-コードサンプルについてはjson.orgを確認してください。
JSON.orgの このライブラリ を使用して、文字列をJSONオブジェクトに変換できます。
var var1_obj = JSON.parse(var1);
または、 jquery-json ライブラリも使用できます。
var var1_obj = $.toJSON(var1);
返される文字列は有効なJSONではありません。オブジェクトを作成するには、オブジェクト内の名前を引用符で囲み、文字列全体を{ … }
に入れる必要があります。 JSONにはnew Date()
などを含めることもできません。 JSONは、文字列、数値、オブジェクト、配列、true
、false
、およびnull
のみを持つJavaScriptの小さなサブセットです。
詳細については、 JSON grammar を参照してください。