C# 从JSON响应中检索元素
我试图从我们正在构建的Web API中的rest服务的响应中获取一个字段。JSON如下所示:C# 从JSON响应中检索元素,c#,json,asp.net-web-api,json-deserialization,C#,Json,Asp.net Web Api,Json Deserialization,我试图从我们正在构建的Web API中的rest服务的响应中获取一个字段。JSON如下所示: { "d": { "results": [{ "__metadata": { "id": "Web/Lists(guid'4ddc-41e2-bb44-0f92ad2c0b07')/Items(164)", "uri": "https://teams.ax.org/sites/js/project/_api/Web/Lists(gu
{
"d": {
"results": [{
"__metadata": {
"id": "Web/Lists(guid'4ddc-41e2-bb44-0f92ad2c0b07')/Items(164)",
"uri": "https://teams.ax.org/sites/js/project/_api/Web/Lists(guid'4ddc-41e2-bb44-0f92ad2c0b07')/Items(164)",
"etag": "\"6\"",
"type": "SP.Data.St_x0020_CdsListItem"
},
"Folder": {
"__deferred": {
"uri": "https://teams.ax.org/sites/js/project/_api/Web/Lists(guid'4ddc-41e2-bb44-0f92ad2c0b07')/Items(164)/Folder"
}
},
"ParentList": {
"__deferred": {
"uri": "https://teams.ax.org/sites/js/project/_api/Web/Lists(guid'4ddc-41e2-bb44-0f92ad2c0b07')/Items(164)/ParentList"
}
},
"PM_x0020_NameId": 220,
"St_x0020_Name": "<div class=\"ExternalClassA14DB0FF86994403B827D91158CF34B0\">KO</div>",
}]
}}
我在GetfromSharepoint
方法中反序列化JSON,如下所示
using (var client_sharePoint = new HttpClient(handler))
{
var response = client_sharePoint.GetAsync(SP_URL).Result;
var responsedata = await response.Content.ReadAsStringAsync();
var returnObj = JsonConvert.DeserializeObject<SharepointDTO.RootObject>(responsedata);
return returnObj;
}
使用(var-client\u-sharePoint=new-HttpClient(handler))
{
var response=client\u sharePoint.GetAsync(SP\u URL).Result;
var responsedata=await response.Content.ReadAsStringAsync();
var returnObj=JsonConvert.DeserializeObject(responsedata);
返回OBJ;
}
但它抛出了一个错误:
“System.Collections.Generic.IList”不包含“St_x0020_Name”的定义,并且找不到接受“System.Collections.Generic.IList”类型的第一个参数的扩展方法“St_x0020_Name”(是否缺少using指令或程序集引用?)
这句话是不是应该:
string StName = retSharepointobj.d.results.St_x0020_Name.ToString();
是这样吗
string StName = retSharepointobj.d.results.First().St_x0020_Name.ToString();
results
是一个数组,因此您可以使用
foreach(var item in retSharepointobj.d.results){
string StName = item.St_x0020_Name.ToString();
}
或者获取特定元素,例如第一个元素,如:
SharepointDTO.RootObject retSharepointobj = await GetfromSharepoint(StNumber);
string StName = retSharepointobj.d.results[0].St_x0020_Name.ToString();
或者你可以加一张这样的支票
SharepointDTO.RootObject retSharepointobj = await GetfromSharepoint(StNumber);
if(retSharepointobj.d.results.length > 0){
string StName = retSharepointobj.d.results[0].St_x0020_Name.ToString();
}
但是我将整个
KO
放入字符串中,如何仅获取div标记之间的KO
。但是我将整个KO放入字符串中,如何仅获取div标记之间的KO。这是一个不同的问题。您可能希望看到以下内容:
SharepointDTO.RootObject retSharepointobj = await GetfromSharepoint(StNumber);
string StName = retSharepointobj.d.results[0].St_x0020_Name.ToString();
SharepointDTO.RootObject retSharepointobj = await GetfromSharepoint(StNumber);
if(retSharepointobj.d.results.length > 0){
string StName = retSharepointobj.d.results[0].St_x0020_Name.ToString();
}