C# 处理单个和多个Json数据

C# 处理单个和多个Json数据,c#,json.net,C#,Json.net,我有json字符串输出,如下所示,这是单个项,也可以有多个项 [{"name":"someName","id":10,"state":"someState"}] 当我尝试使用jsonvert反序列化上面的json字符串时,我得到下面的错误 无法反序列化当前JSON对象(例如{“name\”:\“value\”}) 进入类型“System.Collections.Generic.List”1,因为该类型需要 用于正确反序列化的JSON数组(例如[1,2,3])。\r\n若要修复此问题 将JSON

我有json字符串输出,如下所示,这是单个项,也可以有多个项

[{"name":"someName","id":10,"state":"someState"}]
当我尝试使用
jsonvert
反序列化上面的json字符串时,我得到下面的错误

无法反序列化当前JSON对象(例如{“name\”:\“value\”}) 进入类型“System.Collections.Generic.List”1,因为该类型需要 用于正确反序列化的JSON数组(例如[1,2,3])。\r\n若要修复此问题 将JSON更改为JSON数组(例如[1,2,3])或更改 反序列化类型,使其成为正常的.NET类型(例如,不是 像integer这样的基元类型,而不是像数组或 可以从JSON对象反序列化的

这是代码块

string response=response.Content.ReadAsStringAsync().Result;//给出json字符串
var result1=JsonConvert.DeserializeObject(响应);//这很有效
var result2=JsonConvert.DeserializeObject(响应);//在此处获取错误信息

因为json字符串可以有单个或多个项,所以在反序列化时我不能使用RootObject

RootObject类看起来像

public class RootObject
{
    [JsonProperty("name")]
    public string Name{ get; set; }

    [JsonProperty("id")]
    public int Id { get; set; }

    [JsonProperty("state")]
    public string State { get; set; }
}

我曾尝试在RootObject类的属性级别和类级别使用
自定义JsonConverter
,请参考,但不知道如何在我的情况下使用它,如果有人能在这里帮助我,我将不胜感激。

我不确定,您为什么说代码不起作用,它抛出了错误。 我试图重新处理这个问题,但似乎对我来说效果很好

using System;
using System.Linq;
using System.Collections.Generic;
using Newtonsoft.Json;


    public class Program
    {
        public static void Main()
        {
            string json="[{\"name\":\"someName\",\"id\":10,\"state\":\"someState\"},{\"name\":\"someName\",\"id\":10,\"state\":\"someState\"}]";
            string json2="[{\"name\":\"someName\",\"id\":10,\"state\":\"someState\"}]";
            var result1 = JsonConvert.DeserializeObject<List<RootObject>>(json);
            var result2 = JsonConvert.DeserializeObject<List<RootObject>>(json2);
            Console.WriteLine("result1 count="+result1.Count());
            Console.WriteLine("result2 count="+result2.Count());

        }



    }
    public class RootObject
    {
        [JsonProperty("name")]
        public string Name{ get; set; }

        [JsonProperty("id")]
        public int Id { get; set; }

        [JsonProperty("state")]
        public string State { get; set; }
    }
使用系统;
使用System.Linq;
使用System.Collections.Generic;
使用Newtonsoft.Json;
公共课程
{
公共静态void Main()
{
字符串json=“[{\'name\':\'someName\',\'id\':10,\'state\':\'someState\',{\'name\':\'someName\',\'id\':10,\'state\':\'someState\'”;
字符串json2=“[{\'name\':\'someName\',\'id\':10,\'state\':\'someState\'}]”;
var result1=JsonConvert.DeserializeObject(json);
var result2=JsonConvert.DeserializeObject(json2);
Console.WriteLine(“result1 count=“+result1.count());
Console.WriteLine(“result2 count=“+result2.count());
}
}
公共类根对象
{
[JsonProperty(“名称”)]
公共字符串名称{get;set;}
[JsonProperty(“id”)]
公共int Id{get;set;}
[JsonProperty(“州”)]
公共字符串状态{get;set;}
}

Dotnet Fiddle

json无法提供列表。它总是给你一个字符串是的,这里的项目列表我的意思是多个项目的回应。总之,编辑了我的帖子。谢谢你的时间。最后发现问题,是由于我从一个api调用中得到的json输出类型,api的输出有几次只是一个单独的项目
'{“name”:“someName”,“id”:10,“state”:“someState”}
,而不是
'[{“name”:“someName”,“id”:10,“state”:“someState”}'
,正如我发布的那样,表示歉意。