c#读取json某一节点数据_使用JsonSerializer选择性地读取部分JSON数据并填充c#对象...

本文介绍了如何在C#中使用Json.NET从复杂的JSON响应中选择性地读取数据,并将其填充到特定的c#对象(如Project类)中。示例展示了如何解析包含多个项目数据的JSON数组,只关注每个项目的'Id','Title'和'Status'属性。
摘要由CSDN通过智能技术生成

我连接到第三方Web服务,该服务返回一个复杂的

JSON对象,该对象仅包含我实际需要的一些信息.

基本上,我只需要“值”中的数组.从该数组中,我只需要“Id”,“Title”和“Status”属性.

我想将这些属性放入名为Project的c#类中.这是我的班级:

public class Project

{

public String Id { get; set; }

public String Title { get; set; }

public String Status { get; set; }

}

我正在尝试使用此代码来读取JSON并执行转换:

using (WebResponse response = request.GetResponse())

{

using (StreamReader reader = new StreamReader(response.GetResponseStream()))

{

var serializer = new JsonSerializer();

var jsonTextReader = new JsonTextReader(reader);

returnValue = serializer.Deserialize(jsonTextReader);

}

}

示例JSON:

{

"odata.metadata":"http://school.edu/Api/1/$metadata#Projects",

"odata.count":"3",

"value":[

{

"odata.id":"http://school.edu/Api/1/Projects('123')",

"RelatedProjects@odata.navigationLinkUrl":"http://school.edu/Api/1/Projects('123')/RelatedProjects",

"Tags@odata.navigationLinkUrl":"http://school.edu/Api/1/Projects('123')/Tags",

"TimedEvents@odata.navigationLinkUrl":"http://school.edu/Api/1/Projects('123')/Categories",

"ep@odata.navigationLinkUrl":"http://school.edu/Api/1/Projects('123')/ep",

"#CreateLike":{

"target":"http://school.edu/Api/1/Projects('123')/CreateLike"

},

"#CreateShortcut":{

"target":"http://school.edu/Api/1/Projects('123')/CreateShortcut"

},

"#Play":{

"target":"http://school.edu/Play/123"

},

"#SendInvitation":{

"target":"http://school.edu/Api/1/Projects('123')/SendInvitation"

},

"#CopyProject":{

"target":"http://school.edu/Api/1/Projects('123')/CopyProject"

},

"#AddVideoPodcast":{

"target":"http://school.edu/Api/1/Projects('123')/AddVideoPodcast"

},

"#AddEP":{

"target":"http://school.edu/Api/1/Projects('123')/AddEP"

},

"Id":"123",

"Title":"Test Title 1",

"Status":"Viewable"

},

{

"odata.id":"http://school.edu/Api/1/Projects('456')",

"RelatedProjects@odata.navigationLinkUrl":"http://school.edu/Api/1/Projects('456')/RelatedProjects",

"Tags@odata.navigationLinkUrl":"http://school.edu/Api/1/Projects('456')/Tags",

"TimedEvents@odata.navigationLinkUrl":"http://school.edu/Api/1/Projects('456')/Categories",

"ep@odata.navigationLinkUrl":"http://school.edu/Api/1/Projects('456')/ep",

"#CreateLike":{

"target":"http://school.edu/Api/1/Projects('456')/CreateLike"

},

"#CreateShortcut":{

"target":"http://school.edu/Api/1/Projects('456')/CreateShortcut"

},

"#Play":{

"target":"http://school.edu/Play/456"

},

"#SendInvitation":{

"target":"http://school.edu/Api/1/Projects('456')/SendInvitation"

},

"#CopyProject":{

"target":"http://school.edu/Api/1/Projects('456')/CopyProject"

},

"#AddVideoPodcast":{

"target":"http://school.edu/Api/1/Projects('456')/AddVideoPodcast"

},

"#AddEP":{

"target":"http://school.edu/Api/1/Projects('456')/AddEP"

},

"Id":"456",

"Title":"Test Title 2",

"Status":"Viewable"

},

{

"odata.id":"http://school.edu/Api/1/Projects('789')",

"RelatedProjects@odata.navigationLinkUrl":"http://school.edu/Api/1/Projects('789')/RelatedProjects",

"Tags@odata.navigationLinkUrl":"http://school.edu/Api/1/Projects('789')/Tags",

"TimedEvents@odata.navigationLinkUrl":"http://school.edu/Api/1/Projects('789')/Categories",

"ep@odata.navigationLinkUrl":"http://school.edu/Api/1/Projects('789')/ep",

"#CreateLike":{

"target":"http://school.edu/Api/1/Projects('789')/CreateLike"

},

"#CreateShortcut":{

"target":"http://school.edu/Api/1/Projects('789')/CreateShortcut"

},

"#Play":{

"target":"http://school.edu/Play/789"

},

"#SendInvitation":{

"target":"http://school.edu/Api/1/Projects('789')/SendInvitation"

},

"#CopyProject":{

"target":"http://school.edu/Api/1/Projects('789')/CopyProject"

},

"#AddVideoPodcast":{

"target":"http://school.edu/Api/1/Projects('789')/AddVideoPodcast"

},

"#AddEP":{

"target":"http://school.edu/Api/1/Projects('789')/AddEP"

},

"Id":"789",

"Title":"Test Title 3",

"Status":"Viewable"

}

],

"odata.nextLink":"http://school.edu/Api/1/Folders('xyz')/Projects?$skip=10&$top=10"

}

我只是得到一个null对象.但是在调试器中,我可以看到它正在从Web服务中提取所有JSON数据.

如何从JSON获得我需要的东西,构建我的c#对象,并忽略所有其余的东西?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值