Распарсить json и записать полученные данные в массив - C#
Формулировка задачи:
Прочитал статью где такой json Преобразовывается в c# таким образом:
А что если их будет несколько:
Как это конвертировать в массив экземпляров?
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}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; }
}