2017-04-01 5 views
0

Ich verwende json.net, um eingehende json in einem WebApi-Dienst zu deserialisieren.C# -Fehler beim Deserialisieren von JSON

var lines = JsonConvert.DeserializeObject<RootObject>(json); 

Nach einer Reihe von anderen ähnlichen Antworten zu lesen, es wirft immer noch diesen Fehler:

The best overloaded method match for 'Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(string)' has some invalid arguments 

Eingang json, die für die Post in Postman verwendet wird:

{ "data": [ 
{"zipcode":"56033","line1":"610 4TH ST","city":"FROST","state":"MN","cid":"1770"}, 
{"zipcode":"56033","line1":"45375 30TH ST","city":"FROST","state":"MN","cid":"1771"}, 
{"zipcode":"56033","line1":"115 4TH ST","city":"FROST","state":"MN","cid":"1772"} 
]} 

Die poco Klassen wurden erstellt mit: http://json2csharp.com.

public class Datum 
    { 
    public string zipcode { get; set; } 
    public string line1 { get; set; } 
    public string city { get; set; } 
    public string state { get; set; } 
    public string cid { get; set; } 
    } 

    public class RootObject 
    { 
    public List<Datum> data { get; set; } 
    } 

Hier ist, was ich sehe, wenn ich den api debuggen:

{{ 
    "data": [ 
    { 
     "zipcode": "56032-0056", 
     "line1": "208 MAIN BOX 56", 
     "city": "FREEBORN", 
     "state": "MN", 
     "cid": "1732" 
    }, 
    { 
     "zipcode": "56033", 
     "line1": "610 4TH ST", 
     "city": "FROST", 
     "state": "MN", 
     "cid": "1770" 
    }, 
    { 
     "zipcode": "56033", 
     "line1": "45375 30TH ST", 
     "city": "FROST", 
     "state": "MN", 
     "cid": "1771" 
    }, 
    { 
     "zipcode": "56033", 
     "line1": "115 4TH ST", 
     "city": "FROST", 
     "state": "MN", 
     "cid": "1772" 
    }, 
    { 
     "zipcode": "56033", 
     "line1": "E 4TH ST", 
     "city": "FROST", 
     "state": "MN", 
     "cid": "1773" 
    } 
    ] 
}} 

nicht sicher, warum WebAPI einen zusätzlichen Satz von geschweiften Klammern ist das Hinzufügen oder wie sie zu verhindern.

Wer sieht was ich vermisse?

+0

Was ist 'json'? –

+0

@GillBates JavaScript Objekt Notation – Sentry

+0

@GillBates Sry, 1. April Gewohnheit. 'Json' ist wahrscheinlich was OP schrieb als" Input JSON " – Sentry

Antwort

1

Wenn Ihre JSON-Variable eine Zeichenfolge ist, wird es funktionieren. Hier ist eine .NET Fiddle Demonstration.

+0

Die Variable json kommt aus der api: öffentliche Liste PostAddressesByLine1Batch (Zeichenfolge Schlüssel, Zeichenfolge Produkt, [FromBody] dynamische Daten) –

+0

Ok, gab @Kman den Vorschlag über die Variable eine Zeichenfolge. Der aktuelle Parameter wird auf "Dynamisch" gesetzt, oder die Daten werden über die API als Null ausgegeben. So hinzufügen var json = data.ToString(); und dann var lines = JsonConvert.DeserializeObject (json); richtig deserialisiert. –

Verwandte Themen