2016-04-02 6 views
0

ok, also bin ich mir nicht ganz sicher, wie ich das erklären soll, aber ich gebe mein Bestes. Ich habe Deserialisierung von Json arbeiten an singulären Objekten, aber wenn ich eine Liste der Objekte in JSON-Form, es funktioniert nicht, und es gibt ein paar zusätzliche Details außerhalb der einzelnen Objekte in einer Liste der Objekte.Deserialisieren einer JSON-Liste von Objekten C#

die Codezeile im ziemlich sicher ist das Problem

var model = JsonConvert.DeserializeObject<DeserializedObjects.BlockList>(JObject.Parse(json).ToString()); 

ist, aber ich kann nicht herausfinden, wie es zu lösen.

sowieso.

Hier werden die mehreren Datenobjekte in json aus stammen aus:

public static async Task<DeserializedObjects.BlockList> GetUpToTenBlocks(int height) 
    { 

     var JData = (dynamic)new JObject(); 
     JData.height = height; 
     String uri = String.Concat(partialApi, "/local/chain/blocks-after"); 

     var response = await client.PostAsync(uri, new StringContent(JData.ToString(), Encoding.UTF8, "application/json")); 
     var content = response.Content; 
     { 
      var json = await content.ReadAsStringAsync(); 

      var model = JsonConvert.DeserializeObject<DeserializedObjects.BlockList>(JObject.Parse(json).ToString()); 

      Console.WriteLine(model.AtIndex[1].difficulty); 
      return model; 
     } 
    } 

die zu deserialisiert wird:

public class PrevBlockHash 
    { 
     public string data { get; set; } 
    } 

    public class Block 
    { 
     public int timeStamp { get; set; } 
     public string signature { get; set; } 
     public PrevBlockHash prevBlockHash { get; set; } 
     public int type { get; set; } 
     public List<object> transactions { get; set; } 
     public int version { get; set; } 
     public string signer { get; set; } 
     public long height { get; set; } 
    } 

    public class Datum 
    { 
     public object difficulty { get; set; } 
     public List<object> txes { get; set; } 
     public Block block { get; set; } 
     public string hash { get; set; } 
    } 

    public class BlockList 
    { 
     public List<Datum> AtIndex { get; set; } 
    } 

und dies ist die json Nutzlast:

{ 
    "data": [ 
    { 
     "difficulty": 11763927507942, 
     "txes": [], 
     "block": { 
     "timeStamp": 167479, 
     "signature": "bb062d9b5f132b39b9e56de2413bf04928af009587446621da7afd351d 
15a2ce7b5504450acf41bc3b19ab71e9bf34722005239d93f05a2318130f85118df40c", 
     "prevBlockHash": { 
      "data": "d4875ad2fc74dacfa89a13f24159d14555d3766f4fe2d708a7596f84eba88 
31b" 
     }, 
     "type": 1, 
     "transactions": [], 
     "version": 1744830465, 
     "signer": "00a30788dc1f042da959309639a884d8f6a87086cda10300d2a7c3a0e0891 
a4d", 
     "height": 1001 
     }, 
     "hash": "f70898011d7343a0823de9c9cf263de29ddf2c16bb78cea626b9af90ea7ec260" 

    }, 
    { 
     "difficulty": 11625594628802, 
     "txes": [], 
     "block": { 
     "timeStamp": 167561, 
     "signature": "116dedf43dd06b9ca634db0e20e06cc93337cdba155bced4d843ece4cc 
9a57487d58e9a34d8a0e19bf71d3b7facb15179a87767f0063ebbce7c940cd545d5f01", 
     "prevBlockHash": { 
      "data": "f70898011d7343a0823de9c9cf263de29ddf2c16bb78cea626b9af90ea7ec 
260" 
     }, 
     "type": 1, 
     "transactions": [], 
     "version": 1744830465, 
     "signer": "6ecd181da287c9ccb0075336de36427f25cbc216dc6b1f0e87e35e41a39f6 
3fe", 
     "height": 1002 
     }, 
     "hash": "77b5644c35e0d0d51f8bb967d0d92e0ddb03c4ede6632cb3b7651b7394617562" 

    }, 
    { 
     "difficulty": 11538802895169, 
     "txes": [], 
     "block": { 
     "timeStamp": 167624, 
     "signature": "982574132fdc99b6f484acdd3f1cb5229b2bf78ad7b4e9af3d7a1873da 
b987401f8bf808ff749aca70c503f490db1411b6cd89dbb0c1daa24fd580f91d3d9601", 
     "prevBlockHash": { 
      "data": "77b5644c35e0d0d51f8bb967d0d92e0ddb03c4ede6632cb3b7651b7394617 
562" 
     }, 
     "type": 1, 
     "transactions": [], 
     "version": 1744830465, 
     "signer": "26a3ac4b24647c77dc87780a95e50cb8d7744966e4569e3ac24e52c532c0c 
d0d", 
     "height": 1003 
     }, 
     "hash": "1a6d52c6317150d1839790da2c1481d714038c869842f769affbec0fdeec9861" 

    } 
    ] 
} 

Antwort

1

Versuchen Sie Folgendes:

var model = JsonConvert.DeserializeObject<DeserializedObjects.BlockList>(json); 
Console.WriteLine(model.data[1].difficulty); 

zusammen mit, auch:

public class BlockList 
{ 
    public List<Datum> data { get; set; } 
} 
+0

es funktionierte! Danke. Also änderte der Name von Daten in AtIndex es? Was ist der Grund dafür? Vielen Dank nochmal – netnoob

+0

Ihre JSON-Payload startet mit: {"data": ... – YSharp

+0

ahhh ok .. danke. – netnoob