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

时间:2015-07-24 19:21:08

标签: c# arrays json json.net

我有一个带有Json数组的字符串

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

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

例如上面的内容是

["{'firstname':'john','lastname':'doe'}","{'firstname':'mary','lastname':'jane'}"] 
然后,我可以在数组的每个元素上使用JObject.Parse来从json生成JObject。

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

json

然而,获得JArray.Parse(json).Select(o => JsonConvert.SerializeObject(o)).ToArray(); 的最快方法是

JObject

答案 2 :(得分:0)

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);