2011-06-22 46 views
13

如何反序列化C#(單聲道)中的JSON字符串?如何反序列化Mono中的JSON字符串?

是否有JSON庫和如何安裝它的說明?我使用的是Fedora 14.

+1

我假設JSON序列化的合同可以用單過。而Json.net也可能在單聲道上工作。不知道你爲什麼提到你的IDE。 – CodesInChaos

+0

@CodesInChaos從什麼時候開始是Fedora的「IDE」?你甚至連首字母縮略詞,兄弟? – user3791372

+0

@ user3791372 [monodevelop](http://www.monodevelop.com/)是一個IDE – CodesInChaos

回答

15

我們不使用json合約序列化程序 - 而是使用Json.NET。它也應該與單聲道一起工作。
你不需要安裝程序集,只需添加一個引用並將其提供給你的最終包!

編輯:
如何添加引用?雖然我不是一個單devlop - 呃......從here採取:

參考 - >編輯參考 - > .NET 大會 - >瀏覽到文件&選擇它

否則:嘿,剛打F1

+0

它可以正常使用Mono,我之前使用過它。 – skolima

+0

@skolima:感謝您的澄清! –

+0

你能告訴我如何引用json。一個monodevelop項目中的網絡? – danidacar

3

我推薦看ServiceStack.NET Text。與JSON.NET相比,它的速度非常快。

序列化字典的例子:

ServiceStack.NET

var jsonSerializer = new JsonSerializer<Dictionary<String, Object>>(); 
var result = jsonSerializer.SerializeToString(dict); 

JSON.NET

var result = JsonConvert.SerializeObject(dict, Formatting.Indented); 
3

看看JSON.NET:

http://components.xamarin.com/gettingstarted/json.net

特點:

  • 靈活的JSON序列化的.NET對象和JSON
  • 的LINQ to JSON之間進行轉換爲手動讀取和寫入JSON
  • 高性能,速度比。 NET的內置JSON串行器
  • 寫入縮進,易讀JSON
  • 轉換JSON和XML

實例序列化和反序列化:

using Newtonsoft.Json; 
    ... 

    public class Person 
    { 
     public string Name { get; set; } 
     public DateTime Birthday { get; set; } 
    } 

    void PersonToJsonToPersonExample() 
    { 
     var person = new Person { Name = "Bob", Birthday = new DateTime (1987, 2, 2) }; 

     var json = JsonConvert.SerializeObject (person); 
     Console.WriteLine ("JSON representation of person: {0}", json); 

     var person2 = JsonConvert.DeserializeObject<Person> (json); 
     Console.WriteLine ("{0} - {1}", person2.Name, person2.Birthday); 
    }