【问题标题】:How to remove redundant encapsulating curly brackets from json?如何从json中删除多余的封装大括号?
【发布时间】:2023-03-12 15:38:01
【问题描述】:

我在 C# 中有一个 JSON 对象,不幸的是,它被这样返回:

var obj = 
{{
    answer: {
             one: "my answer one"
             two: "my answer two"
             }
}};

我希望能够这样去:

string answerOne = obj.answer.one;

由于存在外部大括号,因此我可以访问答案中的字段。如何删除这些或访问内部字段?

【问题讨论】:

  • 在javascript中?
  • C# 抱歉忘记指定
  • 你说“C#”,但写的是 JavaScript 代码。
  • 抱歉有点不对劲。我的 obj 来自服务器并存储到 var 中。然后我尝试访问该变量中的字段。
  • 我很确定您可以将外部对象索引为 0。就像这个 jsonRes[0] 应该将它降低一个级别。设置一个 var jRes =obj[0];然后是 jRes.answer.one

标签: c# json


【解决方案1】:

您可以使用 String.Replace 方法清除字符串:

obj = obj.Replace("{{", "{"); // Replace the left curly braces
obj = obj.Replace("}}", "}"); // Replace the right curly braces

【讨论】:

  • 正好不需要实际删除,替换即可
【解决方案2】:

这看起来不是一个有效的 json 字符串,我怀疑任何 Json 解析器都可以将它反序列化回一个对象。如果所有 API 请求都发生这种情况,您最好请您的服务器开发人员修复此错误。如果您无法控制,您可能需要编写一个 HttpModule 来预处理 Request.Body,清理数据。

【讨论】:

    【解决方案3】:

    这不是一个有效的 Json。

    看看this

    如果你有一个字符串,看起来像这样:

    "{{
        answer: {
                 one: "my answer one"
                 two: "my answer two"
                 }
    }}"
    

    你可以把"{{""}}"替换成"{""}",然后就可以解析了。

    【讨论】:

      【解决方案4】:

      它是一个 JObject。

      JObject foo=JObject.parse(obj); //parse if it is string
      var temp=(JObject)foo;
      var answerone=temp["answer"]["one"]; //my answer one
      

      【讨论】:

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