C# Json对象转换期间出现无效Json错误

C# Json对象转换期间出现无效Json错误,c#,C#,我正在尝试将json响应值转换为c#类值。但当我试图传递到JsonDeserializer响应时,它抛出了一个错误:无效的Json。下面提供了代码示例。还请注意,我正在使用RestSharp进行url调用。下面还提供了示例url: 响应url:http://api.walmartlabs.com/v1/items?apiKey=3zmwbajjf4ugzqhdtgsf59ac&upc=029986182548 string url = "http://api.walmartlabs.com/v1

我正在尝试将json响应值转换为c#类值。但当我试图传递到
JsonDeserializer
响应时,它抛出了一个错误:无效的Json。下面提供了代码示例。还请注意,我正在使用RestSharp进行url调用。下面还提供了示例url:

响应url:
http://api.walmartlabs.com/v1/items?apiKey=3zmwbajjf4ugzqhdtgsf59ac&upc=029986182548

string url = "http://api.walmartlabs.com/v1/items?apiKey=3zmwbajjf4ugzqhdtgsf59ac&upc=029986182548";
             var client = new RestClient(url);
             var request = new RestRequest(Method.GET);
             IRestResponse response = client.Execute(request);
             var deserializer = new JsonDeserializer();
             var wmr = deserializer.Deserialize<WallMartData>(response);
stringurl=”http://api.walmartlabs.com/v1/items?apiKey=3zmwbajjf4ugzqhdtgsf59ac&upc=029986182548";
var client=新的RestClient(url);
var请求=新的重新请求(Method.GET);
IRestResponse response=client.Execute(请求);
var反序列化器=新的JsonDeserializer();
var wmr=反序列化程序。反序列化(响应);
由生成的模型类

namespace WebApplication2.ViewModels
{
公共类属性
{
公共字符串颜色{get;set;}
公共字符串productUrlText{get;set;}
公共字符串uniqueProductId{get;set;}
}
公共类礼品
{
}
公共类映像实体
{
公共字符串thumbnailImage{get;set;}
公共字符串mediumImage{get;set;}
公共字符串大图像{get;set;}
公共字符串entityType{get;set;}
}
公共类数据
{
公共int itemId{get;set;}
public int parentItemId{get;set;}
公共字符串名称{get;set;}
公共双msrp{get;set;}
公共双价格{get;set;}
公共字符串upc{get;set;}
公共字符串categoryPath{get;set;}
公共字符串shortDescription{get;set;}
公共字符串longDescription{get;set;}
公共字符串brandName{get;set;}
公共字符串thumbnailImage{get;set;}
公共字符串mediumImage{get;set;}
公共字符串大图像{get;set;}
公共字符串productTrackingUrl{get;set;}
公共双标准费率{get;set;}
公共字符串颜色{get;set;}
公共布尔市场{get;set;}
公共字符串modelNumber{get;set;}
公共字符串sellerInfo{get;set;}
公共字符串productUrl{get;set;}
公共字符串customerRating{get;set;}
public int numReviews{get;set;}
公共字符串customerRatingImage{get;set;}
公共字符串categoryNode{get;set;}
公共字符串rhid{get;set;}
公共布尔包{get;set;}
公共布尔清除{get;set;}
公共布尔预序{get;set;}
公共字符串stock{get;set;}
公共属性{get;set;}
公共字符串addToCartUrl{get;set;}
公共字符串affiliateAddToCartUrl{get;set;}
公共图书馆免费送货超过35美元{get;set;}
公共礼物礼物礼物{get;set;}
公共列表imageEntities{get;set;}
提供类型{get;set;}的公共字符串
公共bool可用联机{get;set;}
}
}

我不得不猜测,但是URL发送的是一个数组,而不是
WallMartData
的单个对象

试着这样做:

List tmp=newlist();
使用(var sr=new StreamReader(“C:\\Temp\\tst.txt”)//tst.txt包含url响应
{
而(!sr.EndOfStream)
tmp.Add(sr.ReadLine());
}
WallMartData[]x=JsonConvert.DeserializeObject(string.Join(“\n”,tmp));
在您的情况下,它将是:

stringurl=”http://api.walmartlabs.com/v1/items?apiKey=3zmwbajjf4ugzqhdtgsf59ac&upc=029986182548";
var client=新的RestClient(url);
var请求=新的重新请求(Method.GET);
IRestResponse response=client.Execute(请求);
var反序列化器=新的JsonDeserializer();
var wmr=反序列化程序。反序列化(响应);//请参见此处的大括号;-)

我不得不猜测,但是URL发送的是一个数组,而不是
WallMartData
的单个对象

试着这样做:

List tmp=newlist();
使用(var sr=new StreamReader(“C:\\Temp\\tst.txt”)//tst.txt包含url响应
{
而(!sr.EndOfStream)
tmp.Add(sr.ReadLine());
}
WallMartData[]x=JsonConvert.DeserializeObject(string.Join(“\n”,tmp));
在您的情况下,它将是:

stringurl=”http://api.walmartlabs.com/v1/items?apiKey=3zmwbajjf4ugzqhdtgsf59ac&upc=029986182548";
var client=新的RestClient(url);
var请求=新的重新请求(Method.GET);
IRestResponse response=client.Execute(请求);
var反序列化器=新的JsonDeserializer();
var wmr=反序列化程序。反序列化(响应);//请参见此处的大括号;-)

发送的响应是一个json数组,因此您只需将最后一行更改为:

var wmr = deserializer.Deserialize<List<WallMartData>>(response);
var wmr=反序列化程序。反序列化(响应);

基本上是反序列化到模型列表中。

发送的响应是一个json数组,因此您只需将最后一行更改为:

var wmr = deserializer.Deserialize<List<WallMartData>>(response);
var wmr=反序列化程序。反序列化(响应);

基本上反序列化为模型的列表。

它返回一个列表或数组

试试这个

stringurl=”http://api.walmartlabs.com/v1/items?apiKey=3zmwbajjf4ugzqhdtgsf59ac&upc=029986182548";
var client=新的RestClient(url);
var请求=新的重新请求(Method.GET);
IRestResponse response=client.Execute(请求);
var反序列化器=新的JsonDeserializer();
var wmr=反序列化程序。反序列化(响应);

它返回一个列表或数组

试试这个

stringurl=”http://api.walmartlabs.com/v1/items?apiKey=3zmwbajjf4ugzqhdtgsf59ac&upc=029986182548";
var client=新的RestClient(url);