如何动态更改JSON条记录?

How to dynamically change JSON records?

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

"{'Country':'USA','City':'New York','Population':'8554554','Area':'545887','jsonArgs':'{\"BuildingsTypes\":\"Offices\"}','keywords':['keyword1','keyword2']}"

我需要做的是更新 AreaBuildingsTypes 值。 我已尝试执行以下操作:

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

但是,我得到的结构是错误的,但如果我将 falowing 用作静态,它就可以工作。 我也尝试创建如下动态对象:

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("\"", "'");