【问题标题】:I want to add value to existing Json without double quotes我想在没有双引号的情况下为现有 Json 添加价值
【发布时间】:2017-03-01 12:04:52
【问题描述】:

最初我有这样的 Json

{
  "softwareName": "MYSOFT",
  "softwareVersion": "0.4.5.9",
  "TimeZone": "2017-03-01T11:30:18.764103"
}

我想在“softwareName”之前添加“status”:{success: true}

JObject rss = JObject.Parse(jsonString);
rss.Property("softwareName").AddBeforeSelf(new JProperty("status", "{success: true}"));

这给了我这样的结果

{
  "status": "{success: true}",
  "softwareName": "MYSOFT",
  "softwareVersion": "0.4.5.9",
  "TimeZone": "2017-03-01T11:30:18.764103"
}

但是,我想得到这样的结果;

{
  "status": {success: true},
  "softwareName": "MYSOFT",
  "softwareVersion": "0.4.5.9",
  "TimeZone": "2017-03-01T11:30:18.764103"
}

即 status 值,不带双引号。我怎样才能达到这个预期的结果?因为在那之后我会看到如下所示的视图

但目前我有这样的

【问题讨论】:

  • 不应该“成功”也是一个 JProperty,其值为 true,该属性是“状态”属性的值吗?

标签: c# .net json json.net


【解决方案1】:

你想做的:

JObject rss = JObject.Parse(jsonString);
rss.Property("softwareName").AddBeforeSelf(new JProperty("status", JObject.Parse("{success: true}")));

基本上,您需要先将字符串解析为 JSON 对象,然后再将其添加为属性。

【讨论】:

    【解决方案2】:

    试试这个

    obj  = {
      "softwareName": "MYSOFT",
      "softwareVersion": "0.4.5.9",
      "TimeZone": "2017-03-01T11:30:18.764103"
    }
    
    var newKey = "status"
    var newVal = {success : true}
    
    obj[newKey] = newVal
    

    它给了

    obj  = {
      "softwareName": "MYSOFT",
      "softwareVersion": "0.4.5.9",
      "TimeZone": "2017-03-01T11:30:18.764103"
      "status": {success : true}
    }
    

    【讨论】:

    • 看起来不错,但您应该展示如何创建 obj 对象。
    • 没有尝试您的代码。但是,它似乎会起作用@krillgar
    猜你喜欢
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    相关资源
    最近更新 更多