2015-09-22 18 views
2

Я новичок в C#, и я попытался разобрать данные JSON из службы WSDL.Чтение и анализ данных JSON

Вот код:

string cityjson = service.getcity(); 

/* 
sample cityjson return 
[{"City":"Alaminos","Province":"Pangasinan"},{"City":"Angeles","Province":"Pampanga"},{"City":"Antipolo","Province":"Rizal"}] 
*/ 


using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(cityjson))) 
{ 
    var serializer = new DataContractJsonSerializer(typeof(Location)); 
    Location locs = (Location)serializer.ReadObject(ms); 

    Console.WriteLine(locs.Locations); // blank in console output. 
} 

и вот мой код DataContract

[DataContract] 
public class Location 
{ 
    [DataMember] 
    public String[] Locations; 
} 

когда я console.WriteLine(cityjson); печатает весь JSON.

+0

Можете ли вы разместить свой образец json? – jkyadav

+0

Я уже разместил образец json в коде, с комментарием – user3723195

ответ

1

Вашего C# класс является wrong.It должен иметь два свойства City и Province. json объекта является List из Location с. Мы стараемся сделать так, чтобы слова песни JSON.Net были наиболее точными, поэтому если у вас есть какие-то корректировки текста, пожалуйста отправляйте их нам. Мы стараемся сделать так, чтобы слова песни были наиболее точными, поэтому если у вас есть какие-то корректировки текста, пожалуйста отправляйте их нам.

public class Location 
{ 
    public String City { get; set; } 
    public String Province { get; set; } 
} 

var t = "[{'City':'Alaminos','Province':'Pangasinan'},{'City':'Angeles','Province':'Pampanga'},{'City':'Antipolo','Province':'Rizal'}]"; 

var type = JsonConvert.DeserializeObject<List<Location>>(t); 
1

использовать пространство имен System.Web.Script.Serialization;

Перепишите код, как этого

JavaScriptSerializer js = new JavaScriptSerializer(); 
Location locs = js.Deserialize<Location>(ms); 
+3

Как объяснить объяснение вашего ответа, чтобы OP мог изучить концепции, лежащие в основе вашего ответа? –

+0

это не сработает. –

Смежные вопросы