2017-08-03 1 views
0

J'ai un problème désérialiser un JSON à un objet, je l'ai cherché et trouvé les éléments suivants 2 questionNe peut pas désérialiser le tableau JSON en cours (par exemple [1,2,3]) dans le type

1: (Cannot deserialize the current JSON array (e.g. [1,2,3]) into type)

2 :(Additional text encountered after finished reading JSON content:)

la réponse JSON

[ 
    { 
    "$id": "1", 
    "CompanyNumber": "000000", 
    "Address2": null, 
    "Address3": null, 
    "PostCode": "Some POst Code", 
    "County": "UNITED KINGDOM", 
    "AddressDescription": null, 
    "OutOfBusiness": false, 
    "StopDistributionIndicator": null, 
    "BranchIndicator": false, 
    "TelephoneNumber": "0000000", 
    "State": "", 
    "ConfidenceCode": 4, 
    "Number": "734125938", 
    "CompanyName": "Something LIMITED", 
    "Address1": " Lower Road", 
    "CountryCode": "GB", 
    "Town": "London" 
    }, 
    { 
    "$id": "2", 
    "CompanyNumber": "000000", 
    "Address2": null, 
    "Address3": null, 
    "PostCode": "Some POst Code", 
    "County": "UNITED KINGDOM", 
    "AddressDescription": null, 
    "OutOfBusiness": false, 
    "StopDistributionIndicator": null, 
    "BranchIndicator": false, 
    "TelephoneNumber": "0000000", 
    "State": "", 
    "ConfidenceCode": 4, 
    "Number": "734125938", 
    "CompanyName": "Something LIMITED", 
    "Address1": " Lower Road", 
    "CountryCode": "GB", 
    "Town": "London" 
    }, 
    { 
    "$id": "3", 
    "CompanyNumber": "000000", 
    "Address2": null, 
    "Address3": null, 
    "PostCode": "Some POst Code", 
    "County": "UNITED KINGDOM", 
    "AddressDescription": null, 
    "OutOfBusiness": false, 
    "StopDistributionIndicator": null, 
    "BranchIndicator": false, 
    "TelephoneNumber": "0000000", 
    "State": "", 
    "ConfidenceCode": 4, 
    "Number": "734125938", 
    "CompanyName": "Something LIMITED", 
    "Address1": " Lower Road", 
    "CountryCode": "GB", 
    "Town": "London" 
    } 
] 

Mon look classe comme

[JsonProperty(PropertyName = "$id")] 
    public string Id { get; set; } 

    [JsonProperty(PropertyName = "CompanyNumber")] 
    public string CompanyNumber { get; set; } 

    [JsonProperty(PropertyName = "Address2")] 
    public object Address2 { get; set; } 

    [JsonProperty(PropertyName = "Address3")] 
    public object Address3 { get; set; } 

    [JsonProperty(PropertyName = "PostCode")] 
    public string PostCode { get; set; } 

    [JsonProperty(PropertyName = "County")] 
    public string County { get; set; } 

    [JsonProperty(PropertyName = "AddressDescription")] 
    public object AddressDescription { get; set; } 

    [JsonProperty(PropertyName = "OutOfBusiness")] 
    public bool OutOfBusiness { get; set; } 

    [JsonProperty(PropertyName = "StopDistributionIndicator")] 
    public object StopDistributionIndicator { get; set; } 

    [JsonProperty(PropertyName = "BranchIndicator")] 
    public bool BranchIndicator { get; set; } 

    [JsonProperty(PropertyName = "TelephoneNumber")] 
    public string TelephoneNumber { get; set; } 

    [JsonProperty(PropertyName = "State")] 
    public string State { get; set; } 

    [JsonProperty(PropertyName = "ConfidenceCode")] 
    public int ConfidenceCode { get; set; } 

    [JsonProperty(PropertyName = "Number")] 
    public string Number { get; set; } 

    [JsonProperty(PropertyName = "CompanyName")] 
    public string CompanyName { get; set; } 

    [JsonProperty(PropertyName = "Address1")] 
    public string Address1 { get; set; } 

    [JsonProperty(PropertyName = "CountryCode")] 
    public string CountryCode { get; set; } 

    [JsonProperty(PropertyName = "Town")] 
    public string Town { get; set; } 

lorsque je tente de suivre la première question (ce qui est d'enlever le [] depuis le début et la fin de la réponse JSON), il ne fonctionnera que si le JSON ne contiennent que des informations sur une entreprise comme

[ 
    { 
    "$id": "1", 
    "CompanyNumber": "000000", 
    "Address2": null, 
    "Address3": null, 
    "PostCode": "Some POst Code", 
    "County": "UNITED KINGDOM", 
    "AddressDescription": null, 
    "OutOfBusiness": false, 
    "StopDistributionIndicator": null, 
    "BranchIndicator": false, 
    "TelephoneNumber": "0000000", 
    "State": "", 
    "ConfidenceCode": 4, 
    "Number": "734125938", 
    "CompanyName": "Something LIMITED", 
    "Address1": " Lower Road", 
    "CountryCode": "GB", 
    "Town": "London" 
    } 
] 

quand il y a plus d'informations, comme ci-dessus Json je reçois l'erreur « texte supplémentaire rencontré après la lecture du contenu JSON terminé: et je suis en train de deserilazing JSON en utilisant le code ci-dessous

dynamic x = Newtonsoft.Json.JsonConvert.DeserializeObject<SearchResult>(t2, new Newtonsoft.Json.JsonSerializerSettings() { NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore }); 

toute aide serait appréciée, parce que je suis coincé

+1

Essayez JsonConvert.DeserializeObject Ali

Répondre

1

Je pense que vous avez juste besoin de désérialiser à une collection plutôt qu'un seul objet par exemple

var searchResults = Newtonsoft.Json.JsonConvert.DeserializeObject<IEnumerable<SearchResult>>(t2, new Newtonsoft.Json.JsonSerializerSettings() { NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore }) 

searchResults sera un IEnumerable de vos objets SearchResult.

+0

Merci beaucoup pour votre travail, parce que je suis nouveau, je vous poserai une question stupide, pourquoi cela se produit-il? Je n'ai jamais eu ce problème auparavant et j'utilisais la même méthode pour d'autres appels API –

+0

Vous essayiez de convertir un JSON qui représentait un tableau en un objet qui représentait un seul élément, ce qui ne peut pas fonctionner. –

+0

Probablement parce que vous ne spécifiez pas le type à désérialiser avant? Je vois que vous utilisiez une dynamique avant laquelle suggère que cela aurait pu être le cas. –