Мне нужно получать json из веб-сервиса, потом пройтись по нему, чтобы найти определённые значения. Основной проблемой является то, что json приходит в виде
[{данные},{данные}, ...] то есть нету корневого элемента. Раньше брал из файла и просто добавил заголовок, что позволило перебирать. Сейчас это очень неудобно было бы делать, подскажите, есть ли возможность нормально работать с json такого формата и если да, то как?
Скачайте NuGet Newtonsoft.Json и попробуйте перебрать так:
string json = "[{\"key\":\"value1\"},{\"key\":\"value2\"},{\"key\":\"value3\"}]";
JArray array = JArray.Parse(json);
foreach (var e in array) {
Console.WriteLine(e["key"]);
}
Вообщем, предположу, что есть некий запрос к веб-сервису:
var request = (HttpWebRequest)WebRequest.Create("your_address");
//параметры запроса
Далее, нам нужно получить результат (ответ) от самого вэб-сервиса:
var response = (HttpWebResponse)request.GetResponse();
Теперь, при условии, что мы получили некий response, его нужно как-то прочитать, и десериализовать, пример:
//json формата [{data_obj1},{data_obj2},...{data_objN}] мы можем десериализовать в список, не используя root_object
var ser = new DataContractJsonSerializer(typeof(List<data_object>));
List<data_object> recieved_data = new List<data_object>();
using(var reader = new StreamReader(response.GetResponseStream(), true))
{
recieved_data = ser.ReadObject(reader) as List<data_object>
}
Так как в примере используются объекты из пространства имен System.Runtime.Serialization и System.Runtime.Serialization.Json, соответственно следует описать и объект data_object:
[DataContract]
public class data_object
{
[DataMember]
public string prop1 {get;set;}
[DataMember]
public string prop2 {get;set;}
...
[DataMember]
public string propN {get;set;}
}
Ну а поиск реализовать средствами Linq или перебором: LINQ:
var f_data_object = recieved_data.Where(it => it.prop1 == "Foo").FirstOrDefault();;
Перебор:
foreach(var item in received_data)
{
if(item.prop1 == "Foo")
{
//TA-DAM!!!
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
есть небольшой скрипт поиска сделан на php (работает и получает ответ без подключения ajax)
Нужно получить файлы из сетевой папки через php (web-сервер Apache+php на Windows2008 R2 Enterprise) На самом сервере я могу подключить сетевую папку, все данные...