我的json文件看起来像这样
{
lab :[
{
"name": "blah",
"branch": "root",
"buildno": "2019"
}]
}
所以,我需要访问buildno(2019)的值并将其分配给我程序中的变量。
这是我的班级
public class lab
{
public string name { get; set; }
public string branch { get; set; }
public string buildno { get; set; }
}
我使用Newtonsoft.json
尝试了这种方法 using (StreamReader r = new StreamReader(@"ba.json"))
{
string json2 = r.ReadToEnd();
lab item = JsonConvert.DeserializeObject<lab>(json2);
Console.WriteLine(item.buildno);
}
但我没有得到任何输出!只有空白屏幕。
答案 0 :(得分:1)
jsong结构,由你给出
{
lab :[
{
"name": "blah",
"branch": "root",
"buildno": "2019"
}
}
它不是有效的json结构,它应该是这样的
{
lab :[
{
"name": "blah",
"branch": "root",
"buildno": "2019"
}]
}
然后你的C#类结构是
public class Lab
{
public string name { get; set; }
public string branch { get; set; }
public string buildno { get; set; }
}
public class RootObject
{
public List<Lab> lab { get; set; }
}
如果您这样做,那么下面的代码将起作用或您尝试的代码将起作用。
使用反序列化/序列化来转换.net对象类型中的json:使用Newtonsoft库:Serializing and Deserializing JSON
示例:
string json = @"{
'Email': 'james@example.com',
'Active': true,
'CreatedDate': '2013-01-20T00:00:00Z',
'Roles': [
'User',
'Admin'
]
}";
Account account = JsonConvert.DeserializeObject<Account>(json);
Console.WriteLine( account.Email);
答案 1 :(得分:1)
您可以使用以下函数从json获取单个值。
JObject.Parse()
只需将任何API返回的json(如果您使用的话)作为Parse函数的参数传递,并获取如下值:
// parsing the json returned by OneSignal Push API
dynamic json = JObject.Parse(responseContent);
int noOfRecipients = json.recipients;
我正在使用OneSingal API发送推送通知,并且在点击其API时它返回了一个json对象。而且这里的收件人&#39;基本上是json返回的关键。 希望这有助于某人。
答案 2 :(得分:0)
首先,您可以通过
创建一个json对象var lab = JSON.stringify({
"name": "blah",
"branch": "root",
"buildno": "2019"
});
那么你可以像这样得到这个json对象
dynamic model = JsonConvert.DeserializeObject(lab);
然后你得到像
这样的价值 lab l = new lab();
l.buildno = model.buildno;
希望这对你有帮助。