能否向现有的JSON对象添加值?
我的示例代码:
var obj = new { Vall = "myVal1", Val2 = "myVal2", Val3 = "myVal3" };
这是我想要做的:
obj.AddValue(Val4, "myVal4");
var obj = new { Vall = "myVal1", Val2 = "myVal2", Val3 = "myVal3" };
尽管它们看起来相似,但它不是JSON。这是由编译器生成的“匿名类型”,这意味着编译器为您创建了一个类型,其中包含三个名为 Val1
, Val2
和 Val3
的 string
属性。除了您无法说出类型名称(它是匿名的)之外,它是一个非常正常的.NET类。不,您无法在运行时向类添加额外的属性。
与您想要的最接近的东西可能是 ExpandoObject
,但老实说,这听起来像是您正在尝试做一些奇怪的事情。
var obj_old = new { Vall = "myVal1", Val2 = "myVal2", Val3 = "myVal3" };
var obj_new = new { Vall = obj_old.Vall, Val2 = obj_old.Val2, Val3 = obj_old.Val3, Val4 = "myVal4" };
或者,可以声明一个带有附加字段的对象,在需要时设置其值:
var obj = new { Vall = "myVal1", Val2 = "myVal2", Val3 = "myVal3", Val4 = String.Empty };
// ...
obj.Val4 = "myVal4";
Json.Net
克隆该对象并添加自己的属性,例如: var obj = new { ID = 1234, Name = "FooBar" };
obj = JObject.FromObject(obj).Add("feeClass", "A");
{
"ID": 1234,
"Name": "FooBar",
"feeClass": "A"
}
"Val1": "myVal1"
- 请注意键被引用,分隔符为冒号。 - Marc Gravell