如何将包含数组的字符串转换为c#中的数组

本文关键字:数组 转换 字符串 包含 | 更新日期: 2023-09-27 18:04:38

我有一个字符串,在中有一个Json数组

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

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

例如,以上将是

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

然后,我可以使用JObject.Parse对数组的每个元素进行解析,从json中生成JObject。

如何将包含数组的字符串转换为c#中的数组

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

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

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

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

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

然而,获得JObject s的最快方法是

foreach (JObject jObject in JArray.Parse(json)) {
     // do something with jObject
}
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);