Как анализировать данные из веб-службы в ASP.net - PullRequest
1 голос
/ 26 ноября 2011

Я получаю строку из службы SOAP на asp.net.Я не могу понять, как разобрать эту строку и в какой тип переменной?Массив?коллекция?Объект ?.Полученная строка выглядит следующим образом:

<string>
[{"Category":"Mobile Common Needs","CategoryID":"{6039207E61CB}","ProductCount":8,"DisplayName":"Mobile Common Needs"},{"Category":"A Vitamins","CategoryID":"{DB3AD2CE2EAD}","ProductCount":4,"DisplayName":"A Vitamins"},{"Category":"B Complex","CategoryID":"{82133AF08331}","ProductCount":7,"DisplayName":"B Complex"},{"Category":"B Vitamins","CategoryID":"{4BE6939D8F7E}","ProductCount":9,"DisplayName":"B Vitamins"},{"Category":"C Vitamins","CategoryID":"{29D6977A7DCB}","ProductCount":9,"DisplayName":"C Vitamins"},{"Category":"D Vitamins","CategoryID":"{FF8A7E14F1E5}","ProductCount":7,"DisplayName":"D Vitamins"},{"Category":"E Vitamins","CategoryID":"{459AEF26893A}","ProductCount":6,"DisplayName":"E Vitamins"},{"Category":"Health Solutions","CategoryID":"{44C28190872F}","ProductCount":10,"DisplayName":"Health Solutions"},{"Category":"Herb Supplements","CategoryID":"{C24C77EC05EF}","ProductCount":15,"DisplayName":"Herb Supplements"},{"Category":"Minerals","CategoryID":"{A9153D05AAEE}","ProductCount":13,"DisplayName":"Minerals"},{"Category":"Multivitamins","CategoryID":"{79E8951CAC06}","ProductCount":13,"DisplayName":"Multivitamins"},{"Category":"Sleep Aid","CategoryID":"{1D2F16A124BB}","ProductCount":1,"DisplayName":"Sleep Aid"},{"Category":"Supplements","CategoryID":"{9BE59D6B9B23}","ProductCount":22,"DisplayName":"Supplements"},{"Category":"Vitamin Packs","CategoryID":"{9FE0A91C0AA3}","ProductCount":5,"DisplayName":"Vitamin Packs"}]
</string>

1 Ответ

5 голосов
/ 26 ноября 2011

То, что вы извлекаете - это XML с данными JSON.

Если вы извлекаете из него строку JSON, есть несколько способов использовать эту возвращаемую строку.Вы можете создать собственный класс для него со всеми полями, упомянутыми в структуре JSON (Category, CategoryID, ProductCount, DisplayName), а затем сериализовать строку в объекты вашего пользовательского типа класса.

Это будет выглядетьнапример:

DataContractJsonSerializer serializer = 
    new DataContractJsonSerializer(typeof(YourObjectType));

YourObjectType = (YourObjectType)serializer.ReadObject(str);

Вы также можете использовать новое динамическое ключевое слово в C # 4 следующим образом:

using System.Web.Script.Serialization;
JavaScriptSerializer jss = new JavaScriptSerializer();
var d=jss.Deserialize<dynamic>(str);

Тогда вам не нужно будет определять класс для ваших объектов, и выможет получить доступ к элементам через d.Category, например, и во время выполнения .NET проверит, доступно ли свойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...