C# 如何动态更改JSON记录?

C# 如何动态更改JSON记录?,c#,json,.net,jsonconvert,C#,Json,.net,Jsonconvert,我有一个JSON字符串,其结构如下: "{'Country':'USA','City':'New York','Population':'8554554','Area':'545887','jsonArgs':'{\"BuildingsTypes\":\"Offices\"}','keywords':['keyword1','keyword2']}" 我需要做的是更新Area和BuildingsTypes值。 我已尝试做以下工作: s

我有一个JSON字符串,其结构如下:

"{'Country':'USA','City':'New York','Population':'8554554','Area':'545887','jsonArgs':'{\"BuildingsTypes\":\"Offices\"}','keywords':['keyword1','keyword2']}"
我需要做的是更新Area和BuildingsTypes值。 我已尝试做以下工作:

string updatedJSON = String.Format("{'Country':'USA','City':'New York','Population':'8554554','Area':'{0}','jsonArgs':'{\"BuildingsTypes\":\"{1}\"}','keywords':['keyword1','keyword2']}", countryArea, buildingType);
string[] stringKeywords = new string[] {"keyword1", "keyword2"};

var jsonArgs = new
                {
                    featureTypes = buildingType

                };
var layerDescription = new
                {
                    Country = "USA",
                    City = "New York",
                    Population = "8554554",
                    Area = countryArea,
                    jsonArgs = jsonArgs,
                    keywords = stringKeywords

                };
string stringJSON = JsonConvert.SerializeObject(layerDescription);
然而,我认为这个结构是错误的,但是如果我使用fallowing作为静态的,它就会工作。 我还尝试创建如下动态对象:

string updatedJSON = String.Format("{'Country':'USA','City':'New York','Population':'8554554','Area':'{0}','jsonArgs':'{\"BuildingsTypes\":\"{1}\"}','keywords':['keyword1','keyword2']}", countryArea, buildingType);
string[] stringKeywords = new string[] {"keyword1", "keyword2"};

var jsonArgs = new
                {
                    featureTypes = buildingType

                };
var layerDescription = new
                {
                    Country = "USA",
                    City = "New York",
                    Population = "8554554",
                    Area = countryArea,
                    jsonArgs = jsonArgs,
                    keywords = stringKeywords

                };
string stringJSON = JsonConvert.SerializeObject(layerDescription);
这样我得到了几乎正确的结果:

"{'Country':'USA','City':'New York','Population':'8554554','Area':'545887','jsonArgs':{\"BuildingsTypes\":\"Offices\"},'keywords':['keyword1','keyword2']}"
这里缺少的是
{\'BuildingsTypes\':\'Offices\'}
的单引号,我将字符串发送到的另一个应用程序不接受它。 如何动态添加值或添加缺少的引号?
提前感谢。

如果希望在jsonArgs值周围加上引号,则需要将对象转换为字符串。最简单的方法是对序列化程序进行额外调用

var args = new { featureTypes = buildingType };
var jsonArgs = JsonConvert.SerializeObject(args);

如果是关于引用,就像其他的一样,只需替换

stringJSON.Replace(“\”,“”);