Есть ли способ указать, как вы хотите проанализировать определенные свойства в Newtonsoft.Json? - PullRequest
0 голосов
/ 28 февраля 2019

В настоящее время я пытаюсь проанализировать данные пользователя в этой форме:

{
  "id": "0",
  "name": "Tristan Paul",
  "location": {
    "country": "USA",
    "city": "District of Columbia"
  },
  "job": {
    "industry": "Tech",
    "sector": "Tech"
  },
  "experience": 2,
  "frequency": 2,
  "interests": [
    "Social Media",
    "Millenials",
    "Change Management"
  ],
  "role": "Mentor",
  "age": 34
}

Я хочу разобрать их в Dictionary<string, object>, что я сделал с JObject.Parse(json) и object.ToObject<Dictionary<string, object>>().При тестировании типов каждого из значений в этом словаре он выводит следующую распечатку.

System.String 
System.String 
Newtonsoft.Json.Linq.JObject 
Newtonsoft.Json.Linq.JObject 
System.Int64
System.Int64
Newtonsoft.Json.Linq.JArray
System.String
System.Int64

Что я хочу знать, есть ли способ указать, как Newtonsoft.Json.Linq.JObject и Newtonsoft.Json.Linq.JArrayтакже конвертируются?Или мне нужно перебрать каждое значение и сделать .ToObject<T>() для них?

Спасибо!

Редактировать : Я сейчас пытаюсь Deserialize Json до Person объекта.Properties этого Person объекта выглядит следующим образом.

[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("role")]
public string Role { get; set; }

[JsonExtensionData]
public Dictionary<string, object> Properties { get; set; }

Я ищу способ использования JsonConverter или ContractResolver для определения того, как будет добавлено каждое из этих дополнительных свойств.,То же, что и проблема выше для исходных данных и попыток перехватить эти JObjects и JArrays и преобразовать их в другой тип.

Я не могу найти способ сделать это с JsonConverter, ячего-то не хватает?

Я хочу преобразовать JArray в String[] и JObjects в Dictionary.

System.String 
System.String 
Newtonsoft.Json.Linq.JObject => System.Dictionary<string, string>
Newtonsoft.Json.Linq.JObject => System.Dictionary<string, string>
System.Int64
System.Int64
Newtonsoft.Json.Linq.JArray => System.String[]
System.String
System.Int64
...