从c#中的json文件访问单个值

时间:2018-05-23 05:26:32

标签: c# json c#-4.0

我的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);
        }

但我没有得到任何输出!只有空白屏幕。

3 个答案:

答案 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;

希望这对你有帮助。