当我在C#中使用以下代码时
var resultset = JsonConvert.DeserializeObject(objInputData.ServiceInputData);
我得到如下结果集
{
"Inputdata": [
{
"EmpId": "13390",
"ContractId": ""
}
]
}
如何将EmpId
和ContractId
放入C#中的变量?
以下是我将EmpId
存储到变量中的代码。但这似乎是错误的。
var EmpId = resultset.EmpId;
var ContractId = resultset.ContractId;
我怎样才能做到这一点?
答案 0 :(得分:1)
首先,解释什么不起作用总是有帮助的。说这是“错误的”并不能真正帮助人们诊断你的问题。
您可能收到编译器错误,告诉您“EmpId不是对象属性”的效果。这是因为您正在调用的DeserializeObject
版本返回object
而object
没有EmpId
属性。
最简单的解决方案是反序列化为强类型类(使用http://json2csharp.com生成):
public class Inputdata
{
public string EmpId { get; set; }
public string ContractId { get; set; }
}
public class RootObject
{
public List<Inputdata> Inputdata { get; set; }
}
然后使用:
var result = JsonConvert.DeserializeObject<RootObject>(objInputData.ServiceInputData);
Inputdata
实际上是一个列表,因此您可能会获得倍数。
foreach(var inputData in result.Inputdata)
{
// inputData.EmpId
// inputData.ContractId
}
答案 1 :(得分:0)
基于你的json,inputData是一个ARRAY,所以它就是
var EmpId = resultset.Inputdata[0].EmpId;
var ContractId = resultset.Inputdata[0].ContractId;