2017-09-19 6 views
0

J'utilise url api pour obtenir une réponse JSONdésérialiser retour JSON données vide

http://localhost/WaWebService/Json/NodeDetail/Demo/SCADA_NODE_DEMO 

En utilisant le logiciel Postman Je vérifie il y a réponse

{ 
    "Result": { 
     "Ret": 0 
    }, 
    "Node": { 
     "ProjectId": 1, 
     "NodeId": 1, 
     "NodeName": "SCADA_NODE_DEMO", 
     "Description": "", 
     "Address": "SALMAN-MUSHTAQ", 
     "Port1": 0, 
     "Port2": 0, 
     "Timeout": 0 
    } 
} 

Après que je fais la classe

class Result 
    { 
     public int Ret { get; set; } 
    } 

    public class Node 
    { 
     public int ProjectId { get; set; } 
     public int NodeId { get; set; } 
     public string NodeName { get; set; } 
     public string Description { get; set; } 
     public string Address { get; set; } 
     public int Port1 { get; set; } 
     public int Port2 { get; set; } 
     public int Timeout { get; set; } 
    } 

Maintenant, je désérialiser l'objet json en utilisant DataContractJsonSerializer

var client = new WebClient { Credentials = new NetworkCredential("username", "password") }; 


       string json = client.DownloadString(url); 
       using(var ms = new MemoryStream (Encoding.Unicode.GetBytes(json))) 
       { 
        DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(Node)); 
        Node nObj = (Node)deserializer.ReadObject(ms); 
        Console.WriteLine("Node name: " + nObj.NodeName); 
       } 

Il ne donne rien sur la console. S'il vous plaît, aidez à résoudre ce problème. Advance merci.

+0

J'essaie aussi avec Json.Net et JavaScriptSerializer, mais même problème que je affronté. S'il vous plaît aider les experts. –

Répondre

1

Vous devez créer la classe qui ont une même structure que la réponse JSON

class JsonResponse 
{ 
    public Result Result { get; set; } 
    public Node Node { get; set; } 
} 

class Result 
{ 
    public int Ret { get; set; } 
} 

public class Node 
{ 
    public int ProjectId { get; set; } 
    public int NodeId { get; set; } 
    public string NodeName { get; set; } 
    public string Description { get; set; } 
    public string Address { get; set; } 
    public int Port1 { get; set; } 
    public int Port2 { get; set; } 
    public int Timeout { get; set; } 
} 

Et puis JSON désérialiser comme celui-ci

DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(JsonResponse)); 
+0

remercie l'homme. Cela fonctionne bien. –