Доступ к одному значению из файла JSON в C # - PullRequest
0 голосов
/ 23 мая 2018

Мой файл 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 голосов
/ 23 мая 2018

Прежде всего вы создаете объект json с помощью

var lab = JSON.stringify({
    "name": "blah",
        "branch": "root",
        "buildno": "2019"
    });

, затем вы можете получить этот объект json, например,

dynamic model = JsonConvert.DeserializeObject(lab);

, затем вы получите значение, например

* 1008.*

Надеюсь, эта помощь для вас.

0 голосов
/ 23 мая 2018

Вы можете использовать следующую функцию для получения одного значения из json.

JObject.Parse ()

Просто передайте json, возвращенный любым изAPI (если вы используете) в качестве параметра для функции Parse и получения значения следующим образом:

// parsing the json returned by OneSignal Push API 
dynamic json = JObject.Parse(responseContent);
int noOfRecipients = json.recipients;

Я использовал OneSingal API для отправки push-уведомлений и при попадании в их API он возвращал объект json.И здесь «получатели» были в основном ключом, возвращенным в JSON.Надеюсь, это кому-нибудь поможет.

0 голосов
/ 23 мая 2018

структура 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; }
}

если вы сделаете это, приведенный ниже код будет работать или код, который вы пытаетесь, будет работать.


использовать Deserialize / serialize для преобразования вашего json в тип объекта .net: использовать библиотеку Newtonsoft: Сериализация и десериализация 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...