【问题标题】:How do I convert a string containing an array to an array in c#如何将包含数组的字符串转换为c#中的数组
【发布时间】:2015-07-24 19:21:08
【问题描述】:

我有一个字符串,里面有一个 Json 数组

"[{'firstname':'john','lastname':'doe'},{'firstname':'mary','lastname':'jane'}]" 

如何将其转换为 json 字符串数组?

例如上面是

["{'firstname':'john','lastname':'doe'}","{'firstname':'mary','lastname':'jane'}"] 

然后我可以对数组的每个元素使用 JObject.Parse 从 json 生成 JObject。

【问题讨论】:

  • 按字符拆分他。
  • 那么第一个字符串是你的json?或者你的json里面有一个字符串?这不是很清楚。如果是您的 json,您应该能够将其脱轨为数组。
  • 您是否尝试过实施自己的解决方案?
  • 你的字符串(或它的内容)也不能是 json,因为它使用单引号而不是双引号。
  • @deathismyfriend:手工处理 Json 是浪费时间。有很多图书馆可以做到这一点。

标签: c# arrays json json.net


【解决方案1】:

您提到了JObject.Parse,所以您使用的是 Json.NET,对吗?你真的需要中间的字符串数组吗?如果没有,只需使用JArray.Parse 一次性解析JSON。

如果数组中的元素都表示相同的类型,并且您想要转换它们,您可以使用Values<T>()将它们全部转换为强类型数组:

Person[] people = JArray.Parse(json).Values<Person>().ToArray();

【讨论】:

    【解决方案2】:

    假设您的 JSON 在字符串变量 json 中,获取 JSON 字符串数组的最短方法是:

    JArray.Parse(json).Select(o => JsonConvert.SerializeObject(o)).ToArray();
    

    但是,获得JObjects 的最快方法是

    foreach (JObject jObject in JArray.Parse(json)) {
         // do something with jObject
    }
    

    【讨论】:

      【解决方案3】:
      string jsonString = "[{'firstname':'john','lastname':'doe'},{'firstname':'mary','lastname':'jane'}]";
      string[] jsonStringArray = JsonConvert.DeserializeObject<JArray>(jsonString)
                  .Select(JsonConvert.SerializeObject)
                  .ToArray();
      

      或者,您可以这样做:

      class Person
      {
          public string firstname { get; set; }
          public string lastname { get; set; }
      }
      ...
      string jsonString = "[{'firstname':'john','lastname':'doe'},{'firstname':'mary','lastname':'jane'}]";
      Person[] personArray = JsonConvert.DeserializeObject<Person[]>(jsonString);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-14
        • 1970-01-01
        • 2016-08-16
        • 1970-01-01
        相关资源
        最近更新 更多