Вы можете использовать DynamicObject
для частичной десериализации, так что вам не нужно знать о других свойствах:
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);
Тогда новый Json будет таким, как ожидалось :
{
"firstName": "John",
"lastName": "Smith",
"age": 27,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
}
}