【问题标题】:How to dynamically change JSON records?如何动态更改 JSON 记录?
【发布时间】:2021-01-18 01:56:03
【问题描述】:

我有一个 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\"} 周围的单引号,对此我将字符串发送到的另一个应用程序不接受它。 如何动态添加值或添加缺少的引号? 提前谢谢你。

【问题讨论】:

    标签: c# json .net jsonconvert


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果是其他引号,请替换

      stringJSON.Replace("\"", "'");

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-04
        • 1970-01-01
        • 1970-01-01
        • 2018-08-11
        • 1970-01-01
        相关资源
        最近更新 更多