Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON使用部分对象序列化和反序列化C#_C#_Json_Serialization_Json.net - Fatal编程技术网

JSON使用部分对象序列化和反序列化C#

JSON使用部分对象序列化和反序列化C#,c#,json,serialization,json.net,C#,Json,Serialization,Json.net,这是我要寻找的最后一个JSON对象- { "firstName": "John", "lastName": "Smith", "age": 27, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021-3100" <-- Added by my applicatio

这是我要寻找的最后一个JSON对象-

{
  "firstName": "John",
  "lastName": "Smith",
  "age": 27,
  "address": {
    "streetAddress": "21 2nd Street",      
    "city": "New York",
    "state": "NY",
    "postalCode": "10021-3100"         <-- Added by my application
  }
}
有没有一种方法可以序列化它并添加到传入的JSON中

可以用于部分反序列化,这样就不需要了解其他属性:

var jsonString = @"{
                      ""firstName"": ""John"",
                      ""lastName"": ""Smith"",
                      ""address"": {
                        ""streetAddress"": ""21 2nd Street"",      
                        ""city"": ""New York"",
                        ""state"": ""NY"",     
                      }
                    }";

dynamic dynoObject = JsonConvert.DeserializeObject<dynamic>(jsonString);

//adding age
AdditionalUserInfo additionalUserInfo = new AdditionalUserInfo();
additionalUserInfo.age = 27;
dynoObject.age = additionalUserInfo.age;

//adding postalCode
AdditionalAddressInfo additionalAddressInfo = new AdditionalAddressInfo();
additionalAddressInfo.postalCode = "10021 - 3100";
dynoObject.address.postalCode = additionalAddressInfo.postalCode;

var newJson = JsonConvert.SerializeObject(dynoObject);

您可以通过修改JObject将新值直接添加到Json中。比如说,

var jObj = JObject.Parse(json);
var address = jObj["address"] as JObject;
address.Add("postalCode","10021-3100");
jObj.Add("age",27);
var result = jObj.ToString();
输出

{
  "firstName": "John",
  "lastName": "Smith",
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "age": 27
}
你有没有考虑过用a来做这个?是it和.NET核心的.NET实现。还有第三方
var jObj = JObject.Parse(json);
var address = jObj["address"] as JObject;
address.Add("postalCode","10021-3100");
jObj.Add("age",27);
var result = jObj.ToString();
{
  "firstName": "John",
  "lastName": "Smith",
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "age": 27
}