2014-03-06 18 views
4

我得到了一個可用的JSON反序列化器,但是這是來自URL的JSON文件。我如何重新創建並使其與本地JSON文件一起工作?該文件位於我的應用程序的根目錄中,位於我的MainActivity旁邊。Xamarin Android反序列化本地json文件

這是從URL的工作代碼:

var client = new WebClient(); 
var response = client.DownloadString(new Uri("http://www.mywebsite.nl/form.json")); 

List<Question> questions = JsonConvert.DeserializeObject<List<Question>>(response); 

foreach(Question question in questions) 
{ 

    if (question.type == "textField") { 

     var editText = new EditText (this); 
     editText.Text = "This is question: " + question.id + "."; 
     editText.LayoutParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent,ViewGroup.LayoutParams.WrapContent); 
     layout.AddView (editText); 

    } 
} 

回答

6

我得到它的工作..只好把我的上傳.json文件中的資產文件夾,設置生成操作AndroidAsset和使用下面的代碼:

string response; 

StreamReader strm = new StreamReader (Assets.Open ("form.json")); 
response = strm.ReadToEnd(); 

List<Vraag> vragen = JsonConvert.DeserializeObject<List<Vraag>>(response); 

foreach(Vraag vraag in vragen) 
{ 
    if (vraag.type == "textField") { 
     var editText = new EditText (this); 
     editText.Text = "Dit is vraag: " + vraag.id + "."; 
     editText.LayoutParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent,ViewGroup.LayoutParams.WrapContent); 
     layout.AddView (editText); 
    } 
} 
1
var response = File.ReadAllText("myfile.json"); 

List<Question> questions = JsonConvert.DeserializeObject<List<Question>>(response); 
+0

我的應用程序崩潰與該代碼加載的時候,我沒有得到任何應用程序輸出.. –

+0

是包括在你的應用程序包的內容的文件嗎?我知道這個代碼在Xamarin.iOS中起作用,我認爲它在Xamarin中起作用.Android也是 – Jason

+0

是的,它被標記爲內容。我的總代碼塊是這樣的:http://pastebin.com/z4y3ZASr –