Десериализовать JSON в c # объект, вызывающий исключение

Я не знаю вашего фона, но кроме бумаги, уже упомянутой jj1bdx, вы также можете дать тезис Джеспера Вильгельмсона .

Кстати, если вы хотите контролировать использование памяти в Erlang, чтобы сравнить его с, например, C ++ вы можете проверить:

Надеюсь, это поможет!

0
задан Simant 28 February 2019 в 08:47
поделиться

2 ответа

Свойство score иногда содержит значение с плавающей запятой, но в моем классе c # есть тип данных int , который вызывает исключение. Я не заметил раньше комментария @Ivan Salo . Изменение типа данных int на float исправило мою проблему. Я также использовал List для десериализации JSON, который предлагает @Jon Skeet в разделе комментариев.

public class DetectedLanguage
{
    public string language { get; set; }
    public float score { get; set; }
}
0
ответ дан Simant 28 February 2019 в 08:47
поделиться

Отредактировано как полный ответ:

using Newtonsoft.Json;

class Program
{
    public partial class RootObject
    {
        [JsonProperty("detectedLanguage")]
        public DetectedLanguage DetectedLanguage { get; set; }

        [JsonProperty("translations")]
        public Translation[] Translations { get; set; }
    }

    public partial class DetectedLanguage
    {
        [JsonProperty("language")]
        public string Language { get; set; }

        [JsonProperty("score")]
        public long Score { get; set; }
    }

    public partial class Translation
    {
        [JsonProperty("text")]
        public string Text { get; set; }

        [JsonProperty("to")]
        public string To { get; set; }
    }

    public partial class RootObject
    {
        public static RootObject[] FromJson(string jsonresponse) => JsonConvert.DeserializeObject<RootObject[]>(jsonresponse);
    }

    static void Main(string[] args)
    {
        var response = client.SendAsync(request).Result;
        var jsonResponse = response.Content.ReadAsStringAsync().Result;
        var result = RootObject.FromJson(jsonResponse);
        System.Console.WriteLine(result[0].DetectedLanguage.Language); //outputs "en"
    }
}
0
ответ дан nmvision 28 February 2019 в 08:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: