簡體   English   中英

反序列化JSON-如何反序列化此JSON?

[英]Deserialize JSON - How can I deserialize this JSON?

傑森看起來像:

 [{"id":"001788fffe2e6479","internalipaddress":"192.168.1.2"}]

我的反序列化C#代碼(使用Newtonsoft):

        public class ipBridge
    {
        public string Id { get; set; }
        public string InternalIpAddress { get; set; }
        public string MacAddress { get; set; }
    }

    public class LocatedBridge
    {
        public string BridgeId { get; set; }
        public string IpAddress { get; set; }
    }

和:

        var request = (HttpWebRequest)WebRequest.Create("https://www.test.com/api"); 

        var response = (HttpWebResponse)request.GetResponse();

        var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();


        ipBridge[] responseModel = JsonConvert.DeserializeObject<ipBridge[]>(responseString); //responseString = [{"id":"001788fffe2e6479","internalipaddress":"192.168.1.2"}]

        responseModel.Select(x => new LocatedBridge() { BridgeId = x.Id, IpAddress = x.InternalIpAddress }).ToList();

        Console.WriteLine($"{ip}"); // ip = internalipaddress of JSON, HOW?

您有有效的反序列化代碼,而問題實際上與它無關。 您要訪問的是反序列化的對象字段。

ipBridge[] responseModel = JsonConvert.DeserializeObject<ipBridge[]>(responseString); 
var locatedBridgeModel = responseModel.Select(x => new LocatedBridge() { BridgeId = x.Id, IpAddress = x.InternalIpAddress }).ToList();

Console.WriteLine($"{responseModel[0].InternalIpAddress}"); 
//or
Console.WriteLine($"{locatedBridgeModel[0].IpAddress}"); 
//or
Console.WriteLine($"{locatedBridgeModel.First().IpAddress}"); 

[] (方括號)的出現ipBridge ,JSON中有ipBridge對象(基於JSON中使用的名稱),我可以說它應該是這些對象的列表。 因此,應將其反序列化為List<ipBridge>

使用此代碼:

var json = @"[{ ""id"":""001788fffe2e6479"",""internalipaddress"":""192.168.1.2""}]";
var deserialized = JsonConvert.DeserializeObject<List<ipBridge>>(json);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM