サーバーから受信している json オブジェクトにはCircular Referencesが含まれています。オブジェクトを使用する前に、まずオブジェクトからすべての$ref
プロパティを削除する必要があります。つまり、代わりに、$ref : "1"
このリンクが指すオブジェクトを配置する必要があります。
あなたの場合、IDが1のユーザーのオブジェクトを指している可能性があります
これについては、 github で Douglas Crockfords Plugin をチェックしてください。あなたのために仕事をすることができる cycle.js があります。
または、次のコードを使用できます (テストされていません)。
function resolveReferences(json) {
if (typeof json === 'string')
json = JSON.parse(json);
var byid = {}, // all objects by id
refs = []; // references to objects that could not be resolved
json = (function recurse(obj, prop, parent) {
if (typeof obj !== 'object' || !obj) // a primitive value
return obj;
if ("$ref" in obj) { // a reference
var ref = obj.$ref;
if (ref in byid)
return byid[ref];
// else we have to make it lazy:
refs.push([parent, prop, ref]);
return;
} else if ("$id" in obj) {
var id = obj.$id;
delete obj.$id;
if ("$values" in obj) // an array
obj = obj.$values.map(recurse);
else // a plain object
for (var prop in obj)
obj[prop] = recurse(obj[prop], prop, obj)
byid[id] = obj;
}
return obj;
})(json); // run it!
for (var i=0; i<refs.length; i++) { // resolve previously unknown references
var ref = refs[i];
ref[0][ref[1]] = byid[refs[2]];
// Notice that this throws if you put in a reference at top-level
}
return json;
}
それが役立つかどうか教えてください!