jQuery1.4.2従来のjsonフォーマットと互換性のある解決方法

2951 ワード

元のjsonファイルの内容は:{
label: 'Europe (EU27)',
data: [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]
}
解決方法1:標準的なjsonフォーマットに変更し、文字列に対して「」制限を使用することを要求し、修正後の内容は:
{
"label": "Europe (EU27)",
"data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]
}
これで正常にロードできます.
解決方法2:jQuery-1.4.2.jsで「parseJSON:function」というコードが見つかりました.
 
  
// Logic borrowed from http://json.org/json2.js
if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
.replace(/"[^"\\
\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
.replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
// Try to use the native JSON parser first
return window.JSON && window.JSON.parse ?
window.JSON.parse( data ) :
(new Function("return " + data))();
} else {
jQuery.error( "Invalid JSON: " + data );
}

httpData:functionではparseJSON関数が使用されています.
 
  
// Get the JavaScript object, if JSON is used.
if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
data = jQuery.parseJSON( data );

jQuery 1.3.2では、parseJSONという方法ではなく、次のコードをそのまま使用します.
 
  
// Get the JavaScript object, if JSON is used.
if ( type == "json" )
data = window["eval"]("(" + data + ")");

元の1.3.2のコードに置き換えればいいです.
以下は他のネットユーザーのいくつかの補充です:jquery 1.4.2バージョンは性能が2倍に向上したが、頭が痛いことは$である.getJSON関数は、旧バージョンのJSONデータを標準で書かないと、このバージョンではJSONデータを正常に取得できません
例:
JSON非標準表記
 
  
{Err:1,errmsg:' ID ! !'}

jquery1.4.x以下の古いバージョンは正常に入手できますが、もしあなたのプログラム開発時にこのようなフォーマットを使っていたら、頭が痛くなります.JQUERYを新しいバージョンにアップグレードすると、このフォーマットは読めませんから.
JSON標準の書き方は、各種バージョンで正常に入手できます
 
  
{"Err":1,"errmsg":" ID ! !"}

これはjquery 1のためです.4.X版ではnative json parserを使用しており、jsonフォーマットに厳しい要求がある
プログラムのJSONデータを修正したくない場合は、古い新しいデータを新しいバージョンに適用する方法はありますか?
方法はありますが、旧バージョンのJSON処理関数を復元すればいいのですが、修正方法は以下の通りです.
jq1.4.x Regularバージョンの変更
jquery-1.4を開きます.x.jsファイル、次のコードを見つけます.
data = jQuery.parseJSON( data );
次のコードに変更します.
data = window["eval"]("("+ data + ")");
jq1.4.x Minifiedバージョンの変更
jquery-1.4を開きます.x.min.jsファイル、次のコードを見つけます.
a=c.parseJSON(a);
次のコードに変更します.
a= window["eval"]("("+ a+ ")");
あなたのプログラムを試してみましょう、ほほほ、$.getJSONは正常ですか?
もちろん、もしあなたが正則を書く能力があれば、新しいバージョンのparseJSON関数の中でJSON処理正則を修正することができます.