如何反序列化我的 JSON

本文关键字:JSON 我的 反序列化 | 更新日期: 2023-09-27 18:33:33

下一步要做什么?我希望能够使用 ex 1 的 id 值写入块。或者带有 ex GPIO 值 3 的块,上面有一些简单的东西,比如 WriteLine(id1)
Relay.cs

public class Relay
{
    public int GPIO { get; set; }
    public int id { get; set; }
    public int status { get; set; }
    public string type { get; set; }
}

程序.cs

static void Main(string[] args)
    {
        var client = new RestClient("http://192.168.0.3:1337/auto/api/v1.0/");
        var request = new RestRequest("relays", Method.GET);  
        request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; };
        var response = client.Execute<Relay>(request);
        Console.WriteLine(response.Content);
        Console.ReadLine();
    }

和我在 192.168.0.3:1337/auto/api/v1.0/relays 上的数组

{
 "relays": [
  {
   "GPIO": 2, 
   "id": 1, 
   "status": 0, 
   "type": "Relay"
  }, 
  {
   "GPIO": 3, 
   "id": 2, 
   "status": 0, 
   "type": "Relay"
  }
 ]
}

如果有什么不清楚的地方,或者答案很简单,我很抱歉。如果我错过了重要的东西,只需指出来,我会发布它!

如何反序列化我的 JSON

您可以在中继列表中反序列化它,并迭代并读取所需的任何值

static void Main(string[] args)
    {
        var client = new RestClient("http://192.168.0.3:1337/auto/api/v1.0/");
        var request = new RestRequest("relays", Method.GET);  
        request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; };
        var response = client.Execute<Relay>(request);
        JavaScriptSerializer ser = new JavaScriptSerializer();
          var relayList = ser.Deserialize<List<Relay>>(response.Content);
         foreach(Relay relay in relayList) 
        Console.WriteLine(relay.ID);
        Console.ReadLine();
    }

您需要将该 JSON 解析为对象以操作它们,并且您的 REST 客户端似乎已经这样做了,只需要传递正确的类型即可。

1-创建类结构,就像您正在接收的结构一样:

    public class Relay
    {
        public int GPIO { get; set; }
        public int id { get; set; }
        public int status { get; set; }
        public string type { get; set; }
    }
    public class RelayCollection
    {
        public Relay[] relays { get; set; }
    }

2-解析收到的 json:

var relayCollection = client.Execute<RelayCollection>(request);

现在你已经有了 relayCollection.relays 中的所有中继,像任何其他数组/类一样操作它们

事先,

我为我的英语道歉,但您可以通过创建类列表来序列化 json,然后像这样反序列化 json:

public class Relay {
int GPIO;
public int gPIO {get {return GPIO;} set {GPIO=value;}}
int Id;
public int ID {get {return Id;} set {Id = value;}}
int Status;
public int status {get {return Status;} set {Status = value;}}
string Type;
public string  type {get {return Type;} set {Type = value;}}
}

现在创建一个类列表

List<Relay > relayList = new List<Relay >();

最后解开了json

relayList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Relay>>(request);