不使用属性名.Net反序列化json
我正在使用JSON.NET对来自HTTP的响应进行反序列化,但我遇到了一个问题。这是因为发送结果的响应没有属性名称 我有类似的东西 {“人”:{“杰克”:{“条件”:“好”,“版本”:“1.0.5”},“吉姆”:{“条件”:“坏”,“版本”:“1.0.5”},“黑德”:14,“豪多”:“苹果”} 我怎么能把这个放在课堂上呢 不是:当我粘贴为一个类时,json结果可能比jack和jim多,它创建了jim和jack类。鲍勃和迈克马上就来不使用属性名.Net反序列化json,.net,json,deserialization,.net,Json,Deserialization,我正在使用JSON.NET对来自HTTP的响应进行反序列化,但我遇到了一个问题。这是因为发送结果的响应没有属性名称 我有类似的东西 {“人”:{“杰克”:{“条件”:“好”,“版本”:“1.0.5”},“吉姆”:{“条件”:“坏”,“版本”:“1.0.5”},“黑德”:14,“豪多”:“苹果”} 我怎么能把这个放在课堂上呢 不是:当我粘贴为一个类时,json结果可能比jack和jim多,它创建了jim和jack类。鲍勃和迈克马上就来 对不起,兄弟。我正在写我的作品,但我女儿醒了。去送她回去睡觉。
对不起,兄弟。我正在写我的作品,但我女儿醒了。去送她回去睡觉。我的意思是,在字典里搜索“好”之后,我想回去找“杰克”
好的,我在这里搜索了字典,其中有两个(杰克和吉姆),我想知道我在哪一个字典中找到了“good”你没有一个类,就像你有一个字符串和对象的字典一样。如果执行以下操作,则应能够正确反序列化:
public class PeopleResponse
{
public Dictionary<string, Info> people { get; set; }
public string hede { get; set; }
public string hodo { get; set; }
}
public class Info
{
public string condition { get; set; }
public string version { get; set; }
}
当然,您可以只获取
p
而不是p.Key
,这将返回整个键/值对。复制json,打开VS,然后编辑/粘贴特殊/粘贴json作为类
…您能详细说明您的评论吗?JSON响应总是不同的吗?你在这方面有困难吗@ManuelCalavera给出了你的json,它确实是这样工作的。。。你可以试着表现出你的努力,而不仅仅是回应。这不起作用。对不起,兄弟。我正在写我的作品,但我女儿醒了。去送她回去睡觉。我的意思是,在字典里搜索“好”之后,我想回去找“杰克”。var values=从dictionAnries.values中的值,其中value.condition=“good”选择新的{value.condition,value.version};好的,我在这里搜索了字典,有两个(杰克和吉姆),我想知道我在哪一个字典中找到了“good”@ManuelCalavera:我已经更新了我的答案,以显示LINQ查询在这种情况下是如何工作的。
public class PeopleResponse
{
public Dictionary<string, Info> people { get; set; }
public string hede { get; set; }
public string hodo { get; set; }
}
public class Info
{
public string condition { get; set; }
public string version { get; set; }
}
var results = JsonConvert.DeserializeObject<PeopleResponse>("{myJSONGoesHere}");
var goodStuff = from p in results.people
where p.Value.condition.ToLower() == "good"
select p.Key;