我有这个JSON:
[
{
"Attributes": [
{
"Key": "Name",
"Value": {
"Value": "Acc 1",
"Values": [
"Acc 1"
]
}
},
{
"Key": "Id",
"Value": {
"Value": "1",
"Values": [
"1"
]
}
}
],
"Name": "account",
"Id": "1"
},
{
"Attributes": [
{
"Key": "Name",
"Value": {
"Value": "Acc 2",
"Values": [
"Acc 2"
]
}
},
{
"Key": "Id",
"Value": {
"Value": "2",
"Values": [
"2"
]
}
}
],
"Name": "account",
"Id": "2"
},
{
"Attributes": [
{
"Key": "Name",
"Value": {
"Value": "Acc 3",
"Values": [
"Acc 3"
]
}
},
{
"Key": "Id",
"Value": {
"Value": "3",
"Values": [
"3"
]
}
}
],
"Name": "account",
"Id": "2"
}
]
我有以下课程:
public class RetrieveMultipleResponse
{
public List<Attribute> Attributes { get; set; }
public string Name { get; set; }
public string Id { get; set; }
}
public class Value
{
[JsonProperty("Value")]
public string value { get; set; }
public List<string> Values { get; set; }
}
public class Attribute
{
public string Key { get; set; }
public Value Value { get; set; }
}
我正在尝试使用以下代码反序列化上述JSON:
var objResponse1 = JsonConvert.DeserializeObject<RetrieveMultipleResponse>(JsonStr);
但我得到了这个错误:
无法将当前JSON数组(例如[1,2,3])反序列化为类型“test.Model”。RetrieveMultipleResponse'因为该类型需要一个JSON对象(例如{“name”:“value”})才能正确反序列化。要修复此错误,请将JSON更改为JSON对象(例如{“name”:“value”}),或将反序列化类型更改为数组或实现类似集合接口(例如ICollection,IList)的列表的类型,该列表可以从JSON数组反序列化。还可以将JsonArrayAttribute添加到类型中,以强制其从JSON数组反序列化。路径“”,第1行,位置1。
无法向解决方案添加注释,但这对我无效。对我有效的解决方案是使用:
var des = (MyClass)Newtonsoft.Json.JsonConvert.DeserializeObject(response, typeof(MyClass));
return des.data.Count.ToString();
将JSON数组反序列化为强类型。NET对象
如果想要支持泛型(在扩展方法中),这就是模式。。。
public static List<T> Deserialize<T>(this string SerializedJSONString)
{
var stuff = JsonConvert.DeserializeObject<List<T>>(SerializedJSONString);
return stuff;
}
它的用法如下:
var rc = new MyHttpClient(URL);
//This response is the JSON Array (see posts above)
var response = rc.SendRequest();
var data = response.Deserialize<MyClassType>();
MyClassType如下所示(必须匹配JSON数组的名称-值对)
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public class MyClassType
{
[JsonProperty(PropertyName = "Id")]
public string Id { get; set; }
[JsonProperty(PropertyName = "Name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "Description")]
public string Description { get; set; }
[JsonProperty(PropertyName = "Manager")]
public string Manager { get; set; }
[JsonProperty(PropertyName = "LastUpdate")]
public DateTime LastUpdate { get; set; }
}
使用NUGET下载Newtonsoft。Json在需要的地方添加引用。。。
using Newtonsoft.Json;
您的json字符串被包装在方括号内([]
),因此它被解释为数组,而不是单个的检索多响应对象。因此,您需要将其反序列化为RetrieveMultipleResponse的类型集合,例如:
var objResponse1 =
JsonConvert.DeserializeObject<List<RetrieveMultipleResponse>>(JsonStr);
我有这个JSON: 我有这些类: 我正在尝试使用下面的代码反序列化上面的JSON: 但我得到了这个错误: 无法将当前JSON数组(例如[1,2,3])反序列化为类型“Test.Model.RetrieveMultipleResponse”,因为该类型需要一个JSON对象(例如{“name”:“value”})才能正确反序列化.要修复此错误,可以将JSON更改为JSON对象(例如{“name”:“v
问题内容: 我有一堂这样的课。 我这样绝望。 我的输出在小提琴手上看起来像这样(字符串sc) 但是我收到错误消息:无法将当前的JSON数组(例如[1,2,3])反序列化为这些代码中的错误类型。 谢谢 。 问题答案: 看起来该字符串包含其中包含单个对象的数组。如果从输入的两端删除方括号,则应该能够将数据反序列化为单个对象: 您也可以将数组反序列化为对象列表,然后将对象从索引零处取出。
问题内容: 我正在尝试将json数据反序列化为模型类,但是失败了。这是我的工作: 这是我的模型的样子: 您可以看到我到达这里的Json:http : //api.worldbank.org/incomeLevels/LIC/countries? format=json 这是我得到的错误: 无法将JSON数组反序列化为“ Mvc4AsyncSample.Models.CountryModel”类型。
我有一个通过RabbitMQ作为消息发送的类,在sender服务上,它的定义如下: 并且在接收方服务上: 在receiver controller中,我有以下方法,它应该接受该消息,将其转换为一个对象,并将其保存在数据库中,看起来如下所示: 编辑:根据请求添加堆栈跟踪。
问题背景: 我正在使用牛顿软件 JSON.NET 将 XML 响应从 AWS 服务解封为 C# 对象结构。 问题: 当我尝试反序列化 类属性时,我收到以下错误消息: 我应该补充一点,我无法控制返回的XML,反过来也无法控制我需要将响应反序列化为的大型对象结构。 代码: 以下是“ImageSet”的C#类模型 这是一个显示JSON响应的屏幕截图,突出显示了抛出错误的< code>Category属性
问题内容: 我在反序列化一些json数据,获取InvalidCastExceptions之类的问题。 谁能指出我正确的方向? 这是我要反序列化的json; [{“ OrderId”:0,“名称”:“摘要”,“ MaxLen”:“ 200”},{“ OrderId”:1,“名称”:“详细信息”,“ MaxLen”:“ 0”}] 这是我的代码; 问题答案: OrderId是json中的一个Int(请注