Десериализация JSON с JSON.net C # не выводит все поля - PullRequest
0 голосов
/ 29 мая 2018

Есть ли такой ответ в формате json

{
    "id": "161e6e624c78acfd7fd783844bc0adfa38c5135feb9170c9e8a05094ac41f11a1d87552aae3cd6544cecf7f3b8162edee7c01f5785c14f5ed11e1eee14e28619",
    "name": "Geth/genom.minerpool.net/v1.8.0-unstable-8ec3861d/linux-amd64/go1.9.2",
    "caps": [
      "eth/62",
      "eth/63"
    ],
    "network": {
      "localAddress": "192.168.1.3:8298",
      "remoteAddress": "213.32.53.162:31337"
    },
    "protocols": {
      "eth": {
        "version": 63,
        "difficulty": 121712103143555595,
        "head": "0x7686acff7fa7560013bb6c7997c42d7f6adb0514277edbb7418e362b8e32bca2"
      }
    }
  },

Код программы, которая обессоливает запрос.

public class per 
{
    //[JsonProperty("network")]
    public string localAddress { get; set; }
    public string id { get; set; }
    public string name { get; set; }
}

private void button2_Click(object sender, EventArgs e)
{
    var peer = JsonConvert.DeserializeObject<List<per>>(richTextBox1.Text.ToString());
    dataGridView2.DataSource = peers.Result;
}

Проблема в том, что он не ставит пробелполе в сетевом представлении localAddres.Что я делаю не так?

1 Ответ

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

JSON десериализовывается в коллекцию, пока он представляет собой один объект.

Используя классы, определенные в другом ответе, обработчик событий должен быть выполнен следующим образом.

private async void button2_Click(object sender, EventArgs e) {
    var enbode = new Nethereum.Geth.Web3Geth("http://127.0.0.1:8545");
    var peers = await enbode.Admin.Peers.SendRequestAsync();
    richTextBox1.Text = peers.ToString();
    var peer = JsonConvert.DeserializeObject<Example>(richTextBox1.Text);
    dataGridView2.DataSource = new [] { peer };
}
...