将具有多个顶级项的JSON字符串解析为多个JSON对象

时间:2017-02-06 04:59:17

标签: c# arrays json string parsing

我正在处理从API检索JSON数据的情况。然后我尝试将这些数据映射到相应的JSON对象定义(这是巨大的,所以我不会把它放在这里),这一切都适用于单个顶级项目。但是,在我检索的字符串包含多个顶级JSON项的情况下,我无法解析JSON数据,因为它尚未拆分。

我似乎无法找到一种有效的方法来分割字符串然后解析对象。

我尝试的内容包括以下文章中的项目: Parse Json string in C# https://stackoverflow.com/questions/32273617/parse-json-string-into-liststringhttps://stackoverflow.com/questions/13721686/parse-this-json-string-to-string-array-c-sharp

我使用地图的单个项目到单个对象的代码如下:

public void createTicketObj(string json_string)
    {

        //take in the json string containing the items & deserialize it.
        var item = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(json_string);
        //works for a single JSON item, however not for multiple records. 

    }

如果有人能指出我正确的方向,我将不胜感激! 谢谢。

1 个答案:

答案 0 :(得分:2)

如果您有多条记录,则应将其放在List<T>中。试试这个:

var item = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RootObject>>(json_string);

但是,这不适用于单个项目。为了使其工作,请首先使用以下命令检查JSON是单个还是多个记录:

var token = JToken.Parse(json_string);

if (token is JArray)
{
// Do something
}
else if (token is JObject)
{
// Do something
}

希望它有所帮助!