我遇到了一个问题,我在扫描QR码时需要帮助来检索某个键值,但是由于某种原因,我正在检索ID
。但是,我想改为使用CandidateID
。谁能帮我解决这个问题?提前致谢。
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.
}
}
答案 0 :(得分:0)
您没有得到ID
-您正在读取JSON的根值。这些值完全相同,因此看起来就像您在读取ID字段一样。
将JSON转换为动态对象时,可以使用属性索引器访问正确的值。
根据您的情况,您可以使用以下内容:
var results = JsonConvert.DeserializeObject<dynamic>(barCodeValue);
string id = results["ef4b0f54-e246-468b-ada9-465777c6e743"]["CandiateID"];
第一个值是JSON的根元素。
第二个值是JSON中的字段名称-CandiateID
本地变量id
现在包含JSON中的CandiateID
属性。
答案 1 :(得分:0)
您可以为此目的使用Linq。例如
var jObject = JObject.Parse(barCodeValue);
var candidateID = jObject.Descendants()
.OfType<JProperty>()
.Where(x=>x.Name=="CandiateID")
.First().Value;
如果要提取的CandidateID不止一个,则可以使用
var candidateIDs = jObject.Descendants()
.OfType<JProperty>()
.Where(x=>x.Name=="CandiateID")
.Select(x=>x.Value);