Внезапная смерть Dynami c JSON - newtonsoft. json .linq.jobject 'не содержит определения для - PullRequest
0 голосов
/ 04 августа 2020

Я использую простой код для получения значений из JSON

string JSON = ""; // MY JSON STRING
dynamic data = JObject.Parse(JSON);
Log.Info(TAG, "Access Token " + data.access_token);

Это работало нормально, у меня нет проблем с отладкой, но когда я запускаю его в производстве (Android Эмулятор) Я получаю сообщение об ошибке

newtonsoft. json .linq.jobject 'не содержит определения для «access_token»

My JSON String - это следующее

{
  "access_token": "tIl7bMlOAWJCtdAWKTylZQbo",
  "token_type": "bearer"
}

Я хочу знать, почему это только начало происходить там, где оно всегда работало раньше в течение последних 2 лет и не показывает никаких ошибок при отладке?

1 Ответ

1 голос
/ 04 августа 2020

API LINQ-to- JSON (JObject, JToken, et c.) Существует для того, чтобы позволить работать с JSON без необходимости знать его структуру заранее. Вы можете десериализовать любой произвольный JSON, используя JObject.Parse, как в приведенном ниже коде. Класс JObject может принимать индексатор строк, как и словарь.

string JSON = @"{'access_token': 'tIl7bMlOAWJCtdAWKTylZQbo', 'token_type': 'bearer'}"; // MY JSON STRING
        var data = JObject.Parse(JSON);
        var s = data["access_token"];

JsonConvert.DeserializeObject, с другой стороны, в основном предназначен для использования, когда вы знаете структуру JSON и вы хотите десериализовать в строго typed классы.

 public partial class Page1 : ContentPage
{
    public Page1()
    {
        InitializeComponent();
    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        string JSON = @"{
  'access_token': 'tIl7bMlOAWJCtdAWKTylZQbo',
  'token_type': 'bearer'
}"; // MY JSON STRING          


        var jsondata = JsonConvert.DeserializeObject<MyTokenModel>(JSON);
        var ss = jsondata.access_token;
    }
}

public class MyTokenModel
{
    public string access_token { get; set; }
    public string token_type { get; set; }
}

Снимок экрана:

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...