2011-01-10 2 views
-1

Я пытаюсь проанализировать данные с моего сайта, а затем десериализовать их внутри C#, но я не получил работу. Каков самый простой способ и метод использования при захвате данных из источника http и десериализации его в C#?Пытается анализировать данные с веб-сайта и десериализировать его в C#

+0

Можете ли вы подробно остановиться на «десериализации»? Это данные JSON, XML, HTML и т. Д.? –

+0

Прямо сейчас это данные JSON, но я не мог заставить его работать, поэтому мне интересно, как лучше всего будет сериализовать данные в php и выполнить его проверку в csharp. – Kraffs

+0

Теперь нет необходимости проголосовать без по крайней мере комментария о том, почему ... –

ответ

3

Основываясь на следующем JSON :

{ 
    name: "Brad Christie", 
    score: 10, 
    questions: [ 
    { 
     question_id: 1, 
     question: "How do I deserialize javascript?", 
     answer: "JavaScriptSerializer", 
     points: 10 
    } 
    ] 
} 

и предполагающие эти классы:

public class Question 
{ 
    public Int32 question_id; 
    public String questions; 
    public String answer; 
    public Int32 points; 
} 

public class JSExample 
{ 
    public String name; 
    public Int32 score; 
    IEnumerable<Question> questions; 
} 

ниже должны работы (хотя не проверял и собирается на память о том, что я сделал в прошлом). В основном, JavaScriptSerializer должен взять строку JSON и проанализировать ее на свой пользовательский объект или привести к созданию словаря структуры JSON (я лично предпочитаю размещать объект, чтобы я мог манипулировать им, как я выбрал, но вы можете используйте словарь/динамическую переменную и отлаживайте, чтобы увидеть результат). В любом случае, код будет следующим:

//String the_JSON_string = <data from webpage>; 
JavaScriptSerializer serializer = new JavaScriptSerializer(); 
JSExample example = serializer.Deserialize<JSExample>(the_JSON_string); 
+0

'answer:" JavaScriptSerializer " , очки: 10' ... хорошо, вы заработали тех :) Хороший пример. (Но вы запятнали запятую там, fwiw) –

+0

lol, я становлюсь менее тонким, так как он приближается к постели - хороший звонок. Было больше подходит для контура и показано, как JavaScriptSerializer работает больше всего на свете. Я исправлю это, хотя, хороший улов.;-) –

+0

Он говорит, что пространство имен System.Web.Script.Serialization Script не существует. Как я могу это решить? – Kraffs

0

В .NET существует ряд сериализаторов JSON. В частности встроенный DataContractSerializer

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx

EDIT: (Извините неправильно ссылку, вот один для JSON http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx
и http://msdn.microsoft.com/en-us/library/bb410770.aspx)

и JSON.NET

http://json.codeplex.com/

+0

System.Runtime.Serialization предназначен только для XML, но разве это не так? – Kraffs

+0

Нет, это также делает JSON. :) Мой плохой - это неправильная ссылка - вот что для «DataContractJsonSerializer» http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx – Doobi

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