2017-04-01 5 views
0

json.net을 사용하여 WebApi 서비스에서 들어오는 json을 비 직렬화합니다. 게시물에 대한 우편 배달에 사용되는JSON을 비 직렬화하는 동안 C# 오류가 발생했습니다.

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

입력 JSON :

{ "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"} 
]} 

마시고 클래스

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

다른 유사한 답변의 수를 읽은 후, 여전히이 오류를 던지고있다 다음을 사용하여 만들었습니다 : 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; } 
    } 

내가 API를 디버깅 할 때 내가 볼 것입니다 :

{{ 
    "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" 
    } 
    ] 
}} 

webapi 중괄호의 추가 세트를 추가하거나 방법을 방지하는 이유를 확실하지.

누구나 내가 누락 된 부분을 볼 수 있습니까?

+0

'json'이란 무엇입니까? –

+0

@GillBates JavaScript Object Notation – Sentry

+0

@GillBates Sry, April 1st 버릇. 'json'은 아마도 OP가 "Input json"이라고 쓴 것일 것입니다. – Sentry

답변

1

json 변수가 문자열이면 작동합니다. 시연중인 .NET Fiddle입니다.

+0

json 변수가 api에서 들어오고 있습니다. 공개 목록 PostAddressesByLine1Batch (문자열 키, 문자열 제품, [FromBody] 동적 데이터) –

+0

좋습니다. @kman은 변수 인 문자열에 대한 제안을했습니다. 현재 매개 변수가 동적으로 설정되거나 데이터가 api를 통해 null로 제공됩니다. 그래서 var json = data.ToString();을 추가합니다. 그리고 나서 var lines = JsonConvert.DeserializeObject (json); 올바르게 역 직렬화합니다. –

관련 문제