J'ai ce fichier JSON:
class Passeges { public string images { get; set; } public string id { get; set; } public string answers { get; set; } public string type { get; set; } public string row { get; set; } public string value { get; set; } public string url { get; set; } public string content { get; set; } }
5 Réponses :
Avez-vous essayé d'utiliser deux classes pour analyser votre JSON comme celui-ci?
p>
public class Id { public int value { get; set; } public string url { get; set; } public string content { get; set; } } public class RootObject { public string images { get; set; } public List<Id> id { get; set; } public List<string> answers { get; set; } public string type { get; set; } public string row { get; set; } }
Le modèle n'est pas dans le bon format. Je vous suggère d'utiliser JSON2CSHARP pour convertir le JSON code> à
Classe code > et utilisez
désériializeObject code> pour obtenir le résultat.
static void Main(String[] args)
{
string filePath = @"D:\RnD\test.json";
string jsonString;
var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
using (var streamReader2 = new StreamReader(fileStream, Encoding.UTF8))
{
jsonString = streamReader2.ReadToEnd();
}
var results = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RootObject2>>(jsonString);
var urls = new List<string>();
foreach (var result in results)
{
foreach (var id in result.id)
{
urls.Add(id.url);
}
}
foreach (var item in urls)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
À propos de votre première approche,
C'est facile et vos objets de modèle doivent être: p>
C'est le moyen le plus simple de récupérer les URL sans avoir à déclarer une classe personnalisée et ceci est le code ci-dessus formaté dans une doublure à une doublure pratique p>