Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从JSON响应中检索元素_C#_Json_Asp.net Web Api_Json Deserialization - Fatal编程技术网

C# 从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

我试图从我们正在构建的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(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();
}