C# 如何在JSON.NET中禁用特殊属性或正确处理它们
我将JSON.NET序列化程序与实体框架一起使用,并且遇到了这样一种情况,即输出的JSON包含了这些“特殊属性”,例如C# 如何在JSON.NET中禁用特殊属性或正确处理它们,c#,javascript,json,serialization,json.net,C#,Javascript,Json,Serialization,Json.net,我将JSON.NET序列化程序与实体框架一起使用,并且遇到了这样一种情况,即输出的JSON包含了这些“特殊属性”,例如$id和$ref。据我所知,纯JSON使用这些属性来压缩输出的JSON,这样重复的元素就不必写两次 因此,输出的JSON如下所示: var myArray = [ { "ActiveStates": [ { "$id": "1", "StateID": "C
$id
和$ref
。据我所知,纯JSON使用这些属性来压缩输出的JSON,这样重复的元素就不必写两次
因此,输出的JSON如下所示:
var myArray = [
{
"ActiveStates": [
{
"$id": "1",
"StateID": "CA",
"Name": "California"
},
{
"$id": "2",
"StateID": "NV",
"Name": "Nevada"
}
],
"DefaultState": {
"$ref": "1"
}
}
];
使用Javascript,如何使用DefaultState中的$ref
和AvailableEstates中的$id
返回加利福尼亚州的名称
我正在考虑类似于myArray.find(myArray.DefaultState.$ref.Name)的逻辑
它可能返回California
希望这是像这样简单的事情
编辑:
我也认为学习如何将这些“特殊属性”禁用到数组中是一个可以接受的答案,即使这意味着JSON的输出会因重复元素而变长。 < P>我找到了解决问题的方法: 我正在使用下面定义的getObjects函数,如上面的页面链接所示
var myArray = [
{
"AvailableStates": [
{
"$id": "1",
"CityID": "CA",
"Name": "California"},
{
"$id": "2",
"CityID": "NV",
"Name": "Nevada"}
],
"DefaultState": {
"$ref": "1"
}}
];
var stateName = getObjects(myArray, '$id', myArray[0].DefaultState.$ref)[0].Name;
function getObjects(obj, key, val) {
var objects = [];
for (var i in obj) {
if (!obj.hasOwnProperty(i)) continue;
if (typeof obj[i] == 'object') {
objects = objects.concat(getObjects(obj[i], key, val));
} else if (i == key && obj[key] == val) {
objects.push(obj);
}
}
return objects;
}
我找到了解决问题的方法: 我正在使用下面定义的getObjects函数,如上面的页面链接所示
var myArray = [
{
"AvailableStates": [
{
"$id": "1",
"CityID": "CA",
"Name": "California"},
{
"$id": "2",
"CityID": "NV",
"Name": "Nevada"}
],
"DefaultState": {
"$ref": "1"
}}
];
var stateName = getObjects(myArray, '$id', myArray[0].DefaultState.$ref)[0].Name;
function getObjects(obj, key, val) {
var objects = [];
for (var i in obj) {
if (!obj.hasOwnProperty(i)) continue;
if (typeof obj[i] == 'object') {
objects = objects.concat(getObjects(obj[i], key, val));
} else if (i == key && obj[key] == val) {
objects.push(obj);
}
}
return objects;
}
我设法在配置中禁用了它(NewtonSerialiser)
我设法在配置中禁用了它(NewtonSerialiser)
在此处写了一篇较长的博文:在此处写了一篇较长的博文: