C# 在c中将字符串转换为Json#

C# 在c中将字符串转换为Json#,c#,json,asp.net-web-api,javascriptserializer,C#,Json,Asp.net Web Api,Javascriptserializer,我想将字符串转换为json,但得到的结果是null或error 例如,我想转换此字符串: string json = "{\"$id\":\"1\",\"Result\":{\"$id\":\"2\",\"ListRate\":[{\"$id\":\"3\",\"Title\":\"fetures\",\"ShoppingRateId\":3,\"Rate\":0.0},{\"$id\":\"4\",\"Title\":\"Graphic\",\"Shopping

我想将字符串转换为json,但得到的结果是null或error

例如,我想转换此字符串:

string json =
                "{\"$id\":\"1\",\"Result\":{\"$id\":\"2\",\"ListRate\":[{\"$id\":\"3\",\"Title\":\"fetures\",\"ShoppingRateId\":3,\"Rate\":0.0},{\"$id\":\"4\",\"Title\":\"Graphic\",\"ShoppingRateId\":2,\"Rate\":0.0},{\"$id\":\"5\",\"Title\":\"worth of price\",\"ShoppingRateId\":1,\"Rate\":0.0}],\"MyRate\":[{\"$id\":\"6\",\"Title\":\"worth of price\",\"ShoppingRateId\":1,\"Rate\":1.5},{\"$id\":\"7\",\"Title\":\"Graphic\",\"ShoppingRateId\":2,\"Rate\":2.0},{\"$id\":\"8\",\"Title\":\"fetures\",\"ShoppingRateId\":3,\"Rate\":2.0}],\"ListRated\":[{\"$id\":\"9\",\"Title\":\"worth of price\",\"ShoppingRateId\":1,\"Rate\":30.0,\"theCount\":1,\"theSum\":1.5},{\"$id\":\"10\",\"Title\":\"Graphic\",\"ShoppingRateId\":2,\"Rate\":40.0,\"theCount\":1,\"theSum\":2.0},{\"$id\":\"11\",\"Title\":\"fetures\",\"ShoppingRateId\":3,\"Rate\":40.0,\"theCount\":1,\"theSum\":2.0}]},\"StatusCode\":\"Created\",\"Description\":null}";
  JavaScriptSerializer serializer = new JavaScriptSerializer();
  var myclass = Newtonsoft.Json.JsonConvert.DeserializeObject<ProductDto>(json);
stringjson=
“2\”,,“目前的,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”目前的,”,”,”,”,”,”,”,”,”目前的,”上市率”以下以下以下以下以下几种::““““,“““\\\\””””””“““““\\\\”””:“““““,,““““,,“““,”目前的,”,”,”目前的,”,”,”,”,”目前的,”,”,”,”,”,”目前的市价id\““:::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,””””””””::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,”,”,”,”,”,”,”}],“MyRate\”:[{“$id\”:“6\”,“Title\”:“价格价值”,““7”,”标题:“,“标题”如下:“,,“标题”如下:“,“标题”如下:“图形\”,,“购物费率id”,”购物费率id\:2,,“费率”2,,“费率”2.0\:2.0,”2.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“标题”标题:,,,“标题:,,,,“标题:,,,,,,“标题”标题:,,,,,,,,,,,,“标题:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“标题:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,theSum\“:1.5},{\“$id\”:“10\”,“Title\”:“Graphic\”,\”ShoppingRateId\“:2,\“Rate\”:40.0,\“Count\”:1,\“theSum\”:2.0},{“$id\”:“11\”,“Title\”:“fetures\”,“ShoppingRateId\”:3,\“Rate\”:40.0,\“Count\”:1,\“theSum\”:2.0},\,“StatusCode\”:“Created\”,“Description\”:null};
JavaScriptSerializer serializer=新的JavaScriptSerializer();
var myclass=Newtonsoft.Json.JsonConvert.DeserializeObject(Json);
及产品类别:

public class RootObject
{
        public string id { get; set; }
        public ProductDto Result { get; set; }
    public string StatusCode { get; set; }
    public object Description { get; set; }
}

 public class ProductDto
    {

        public string id { get; set; }
        public IQueryable<MyRateDto> ListRate { get; set; }

        public IQueryable<MyRateDto> MyRate { get; set; }

        public IQueryable<ShoppingRateDto> ListRated { get; set; }
    }

    public class ShoppingRateDto
    {
        public string id { get; set; }
        public string Title { get; set; }

        public long ShoppingRateId { get; set; }

        public double Rate { get; set; }

        public int theCount { get; set; }

        public double theSum { get; set; }
    }

    public class MyRateDto
    {
        public string id { get; set; }
        public string Title { get; set; }

        public long ShoppingRateId { get; set; }

        public double Rate { get; set; }
    }
公共类根对象
{
公共字符串id{get;set;}
公共产品到结果{get;set;}
公共字符串状态码{get;set;}
公共对象描述{get;set;}
}
公共类产品
{
公共字符串id{get;set;}
公共IQueryable ListRate{get;set;}
公共IQueryable MyRate{get;set;}
公共IQueryable列表{get;set;}
}
公务舱购物者
{
公共字符串id{get;set;}
公共字符串标题{get;set;}
public long ShoppingRateId{get;set;}
公共双速率{get;set;}
公共int计数{get;set;}
公共双theSum{get;set;}
}
公共类MyRateDto
{
公共字符串id{get;set;}
公共字符串标题{get;set;}
public long ShoppingRateId{get;set;}
公共双速率{get;set;}
}
我有点困惑该如何转换它。 我还使用了“RootObject”而不是“ProductDto”,但没有任何改变

一些错误:

附加信息:最佳重载方法匹配 'Newtonsoft.Json.JsonConvert.DeserializeObject(字符串)' 有一些无效的参数

其他信息:无法创建和填充列表类型 System.Linq.IQueryable`1[Site.Model.MyRateDto]。路径“Result.ListRate”


这个错误似乎是一个不错的暗示。尝试使用具体的集合,而不是使用
IQueryable
(基本上是任何接口集合)。e、 g.
列表


序列化程序必须使用具体的类才能通过反射实例化它们。当他们阅读类定义时,遇到接口时,序列化程序很少能选择正确的实现。由于可能存在许多不同集合接口的具体实例,因此您应该为序列化程序提供具体类型,以便正常工作。

错误似乎是一个不错的提示。尝试使用具体的集合,而不是使用
IQueryable
(基本上是任何接口集合)。e、 g.
列表


序列化程序必须使用具体的类才能通过反射实例化它们。当他们阅读类定义时,遇到接口时,序列化程序很少能选择正确的实现。由于可能存在许多不同集合接口的具体实例,因此您应该为序列化程序提供具体类型,以便正常工作。

为什么不序列化ProductDto,以便了解进行反序列化所需的json字符串?您提到了一个异常,什么异常?通过这个问题来了解这一点可能会有所帮助。@Fran那么你觉得怎么样?@neouser99我添加了一些新信息,似乎这个错误是一个不错的提示。尝试使用具体的集合,而不是使用IQueryable(基本上是任何接口集合)。e、 g.
List
为什么不序列化产品,以便知道进行反性别化所需的json字符串?您提到了一个异常,什么异常?通过这个问题来了解这一点可能会有所帮助。@Fran那么你觉得怎么样?@neouser99我添加了一些新信息,似乎这个错误是一个不错的提示。尝试使用具体的集合,而不是使用IQueryable(基本上是任何接口集合)。e、 g.
列表