首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以保存一个对象数组(或者json数组,字典数组)在Xamarin,C#,iOS中吗?

我可以保存一个对象数组(或者json数组,字典数组)在Xamarin,C#,iOS中吗?
EN

Stack Overflow用户
提问于 2016-03-25 00:40:44
回答 1查看 776关注 0票数 0

我有一个列表的“应用”对象,我想保存,以文件和检索后。我必须使用“File.AppendAllText(文件名,子)”保存每个对象以进行文件保存,但是当检索文件时,它将抛出以下异常:

保存到文件:

代码语言:javascript
复制
var documents = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
var filename = Path.Combine (documents, "app.json");
for (int i = 0; i < 25; i++) {
    nuint index = (nuint)i;
    App app = appsArray.GetItem<App>(index);
    var json = JsonConvert.SerializeObject (app, Newtonsoft.Json.Formatting.Indented);
    File.AppendAllText(filename, json);
}   

从档案中读取:

代码语言:javascript
复制
    var documents = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
    var filename = Path.Combine (documents, "app.json");
    String text = File.ReadAllText (filename);
    Console.WriteLine ("text: {0}", text);
    App appJSON = (App)Newtonsoft.Json.JsonConvert.DeserializeObject (text);

检索反序列化文件时中断:"Newtonsoft.Json.JsonReaderException引发:“读取完JSON内容后遇到的其他文本:{. Path‘,第14行,位置1。

案文的输出如下:

2016-03-24 18:14:47.405 top2530102:2442745正文:{“标题”:“篮球明星”,“总结”:“世界上最好的多人巴斯基”,"AppIcon":{ "ClassHandle":{},"SuperHandle":{},“句柄”:{} },"AppIconURLString":"http://is2.mzstatic.com/image/thumb/Purple49/v4/71/1e/ad/711ead80-6f18-3b46-2947-85c4d7b38292/mzl.qvwejzyt.png/53x53bb-85.png",“http://is2.mzstatic.com/image/thumb/Purple49/v4/71/1e/ad/711ead80-6f18-3b46-2947-85c4d7b38292/mzl.qvwejzyt.png/53x53bb-85.png”:1,“SuperHandle”,“SuperHandle”,“句柄”:{},"ClassHandle":{ } { }{“标题”:"Snapchat",“摘要”:“生活在当下更有趣:)快乐的快照!\n***\n\n请注意: Snapchatters总是可以捕获或保存您的消息,例如通过截图或使用照相机。"AppIcon":{ "ClassHandle":{},"SuperHandle":{},“句柄”:{},"AppIconURLString":"http://is1.mzstatic.com/image/thumb/Purple49/v4/ea/1c/21/ea1c2133-acbd-c16f-a8d5-33e254fdab7b/mzl.xydsraya.png/53x53bb-85.png","Rank":2,"SuperHandle":{},“句柄”:{ },"ClassHandle":{}

EN

回答 1

Stack Overflow用户

发布于 2016-03-25 01:03:42

您正在序列化每个单独的对象,并将其附加到一个文件中,该文件将创建无效的JSON。相反,您应该只是序列化整个数组并编写一次。

代码语言:javascript
复制
var documents = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
var filename = Path.Combine (documents, "app.json");
var json = JsonConvert.SerializeObject (appsArray, Newtonsoft.Json.Formatting.Indented);
File.WriteAllText(filename, json);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36212353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档