如何反序列化我的 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"
}
]
}
如果有什么不清楚的地方,或者答案很简单,我很抱歉。如果我错过了重要的东西,只需指出来,我会发布它!
您可以在中继列表中反序列化它,并迭代并读取所需的任何值
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);