Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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# 如何检索元素键值?_C#_Json - Fatal编程技术网

C# 如何检索元素键值?

C# 如何检索元素键值?,c#,json,C#,Json,我遇到了一个问题,当我扫描二维码时,我需要帮助检索某个键值,但出于某种原因,我检索的是ID。但是,我想取而代之的是候选ID。有人能帮我解决这个问题吗?提前谢谢 JSON: { "ef4b0f54-e246-468b-ada9-465777c6e743": { "CandiateID": "d9c4ba35-6c68-41de-b11c-f4226701c05a", // I want to retrieve this when I scan the QR

我遇到了一个问题,当我扫描二维码时,我需要帮助检索某个键值,但出于某种原因,我检索的是
ID
。但是,我想取而代之的是
候选ID
。有人能帮我解决这个问题吗?提前谢谢

JSON:

   {
    "ef4b0f54-e246-468b-ada9-465777c6e743": {    
        "CandiateID": "d9c4ba35-6c68-41de-b11c-f4226701c05a", // I want to retrieve  this when I scan the QR code. 
         "ID": "ef4b0f54-e246-468b-ada9-465777c6e743" // I am getting only this when I scan the QR Code.     
    }
} 

您没有获得
ID
——您正在读取JSON的根值。这些值完全相同,因此看起来您只是在读取ID字段

将JSON转换为动态对象时,可以使用属性索引器访问正确的值

在您的情况下,您可以使用以下选项:

var results = JsonConvert.DeserializeObject<dynamic>(barCodeValue);

string id = results["ef4b0f54-e246-468b-ada9-465777c6e743"]["CandiateID"];
var results=JsonConvert.DeserializeObject(barCodeValue);
字符串id=结果[“ef4b0f54-e246-468b-ada9-465777c6e743”][“CandiateID”];
第一个值是JSON的根元素

第二个值是JSON-
CandiateID


局部变量
id
现在包含来自JSON的
CandiateID
属性。

您可以使用Linq。比如说

var jObject = JObject.Parse(barCodeValue);
var candidateID = jObject.Descendants()
                         .OfType<JProperty>()
                         .Where(x=>x.Name=="CandiateID")
                         .First().Value;
var jObject=jObject.Parse(barCodeValue);
var candidateID=jObject.subjects()
第()类
.Where(x=>x.Name==“CandiateID”)
.First()值;
如果要获取多个CandidateID,可以使用

var candidateIDs = jObject.Descendants()
                          .OfType<JProperty>()
                          .Where(x=>x.Name=="CandiateID")
                          .Select(x=>x.Value);
var candidateIDs=jObject.subjects()
第()类
.Where(x=>x.Name==“CandiateID”)
.选择(x=>x.Value);

您将反序列化为
动态
有什么原因吗?web服务的响应数据是否有文档记录?嗯,没有。请查看更新的问题。我按照你给我的进行了调试,没有显示
CandidateID