Распарсить json и записать полученные данные в массив - C#

Узнай цену своей работы

Формулировка задачи:

Прочитал статью где такой json
{  
   "firstName": "Иван",  
   "lastName": "Иванов",  
   "address": {  
     "streetAddress": "Московское ш., 101, кв.101",  
     "city": "Ленинград",  
     "postalCode": 101101  
   },  
   "phoneNumbers": [  
     "812 123-1234",  
     "916 123-4567"  
   ]  
 }
Преобразовывается в c# таким образом:
public class Person  
   {  
     public string firstName { get; set; }  
     public string lastName { get; set; }  
     public Address address { get; set; }  
     public string[] phoneNumbers { get; set; }  
     public class Address  
     {  
       public string streetAddress { get; set; }  
       public string city { get; set; }  
       public int postalCode { get; set; }  
     }  
   }  
DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(Person));  
       string fileContent=System.IO.File.ReadAllText("json.txt");  
       Person person = (Person)json.ReadObject(new System.IO.MemoryStream(Encoding.UTF8.GetBytes(fileContent)));
А что если их будет несколько:
{
users: [
   {
        firstName: "Иван",
        lastName: "Иванов",
        address: {
             streetAddress: "Московское ш., 101, кв.101",
             city: "Ленинград",
             postalCode: 101101
        },
        phoneNumbers: [
              "812 123-1234",
              "916 123-4567"
        ]
   },
{
        firstName: "Михаил",
        lastName: "Михайлов",
        address: {
             streetAddress: "Московское ш., 201, кв.200",
             city: "Москва",
             postalCode: 201201
        },
        phoneNumbers: [
              "712 123-1234",
              "716 123-4567"
        ]
    }
]
}
Как это конвертировать в массив экземпляров?

Решение задачи: «Распарсить json и записать полученные данные в массив»

textual
Листинг программы
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;
 
 
class Program
{
    private static void Main(string[] args)
    {
 
        DataContractJsonSerializer json1 = new DataContractJsonSerializer(typeof(Foo));
        string fileContent = File.ReadAllText("zzz.txt", Encoding.Default);
 
        Foo person = (Foo)json1.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(fileContent)));
 
 
        // Foo person = (Foo) json1.ReadObject(GenerateStreamFromString(s));
 
 
 
    }
    static public Stream GenerateStreamFromString(string s)
    {
        MemoryStream stream = new MemoryStream();
        StreamWriter writer = new StreamWriter(stream);
        writer.Write(s);
        writer.Flush();
        stream.Position = 0;
        return stream;
    }
}
 
[DataContract]
class Foo
{
    [DataMember]
    public List<User> users { get; set; }
}
 
[DataContract]
class User
{
    [DataMember]
    public string firstName { get; set; }
    [DataMember]
    public string lastName { get; set; }
    //[DataMember(Name = "address")]
    //public Dictionary<string, string> address { get; set; }
    [DataMember(Name = "address")]
    public Address address { get; set; }
    [DataMember]
    public List<string> phoneNumbers { get; set; }
}
[DataContract]
class Address
{
    [DataMember]
    public string streetAddress { get; set; }
    [DataMember]
    public string city { get; set; }
    [DataMember]
    public int postalCode { get; set; }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы