2011-02-09 37 views
5

我是Monotouch的初學者。
我想使用DataContractJsonSerializer反序列化Json數據。但是我無法在MonoDevelop中引用System.Runtime.Serialization.Json(僅System.Runtime.Serialization下的.Formatters)。我引用了System.Runtime.Serialization。我的配置和安裝順序是:1。 iPhone的SDK 4.2 2.單2.8.2(不CSDK版) 3. MonoTouch的3.2.4評估和演示 4的MonoDevelop 2.4在MonoTouch中找不到System.Runtime.Serialization.Json

問題是什麼?

回答

7

MonoTouch沒有提供DataContractJSonSerializer,就像這個串行器看起來那麼簡單,它帶來了一大組庫。

您可以使用System.Json API或者您可以嘗試NewtonSoft的JSon庫。

+0

嗨米格爾,你確定嗎?我看到這個問題http://stackoverflow.com/questions/3516471/javascriptserializer-and-monodevelop 我也讀過這本書,但Marcus終於使用了DataContractJsonSerializer – NewComer 2011-02-09 16:32:00

0

如果你和我一樣,都試圖在一個跨平臺的代碼庫使用DataContractJsonSerializer,很容易足以包裹在DataContractJsonSerializer的JSON.NET API(又名Newtonsoft.Json):

using System; 
using System.IO; 
using System.Reflection; 
using Newtonsoft.Json; 

namespace System.Runtime.Serialization.Json 
{ 
public class DataContractJsonSerializer 
{ 
    private Type type; 
    private JsonSerializer js; 

    public DataContractJsonSerializer (Type t) 
    { 
     this.type = t; 
     this.js = new JsonSerializer(); 
    } 

    public object ReadObject(Stream stream) 
    { 
     StreamReader reader = new StreamReader(stream);  
     return js.Deserialize(reader, type); 
    } 

    public void WriteObject(Stream stream, object o) 
    { 
     StreamWriter writer = new StreamWriter(stream); 
     js.Serialize(writer, o);  
     writer.Flush(); 
    } 
} 
} 

當然,這引出了爲什麼不切換到在任何地方使用JSON.NET API的問題......我對該API的個人體驗是,它比使用DCJS(至少在Windows Phone的非正式測試中)要慢。

希望有幫助!

相關問題