我正在从文件中读取json并序列化为任何对象,如下所示:
MyObject o = myjson.FromJson<MyObject>();
json文本是正确的,因为我在转移到ServiceStack之前使用的是Newtonsoft.Json。
但是,在序列化之后,对象“o”没有相应地设置(即空或在对象的构造函数中设置默认值)。
是班级:
public class Options
{
public string Email;
public string Password;
public string Answer;
//etc...
public Options()
{
this.Email = "default";
this.Password = "default";
//etc...
}
}
有什么不对?
答案 0 :(得分:0)
让我们假设您的JSON位于文本文件中。
using Newtonsoft.Json;
var item = @"C:\someJSON.txt";
var op = JsonConvert.DeserializeObject<SavedOpData>(File.ReadAllText(item));
SavedOpData
internal partial class SavedOpData
{
internal class AppUri
{
public string file_name;
public string file_uri;
public int file_size;
public string file_hash;
}
}
要将其序列化回JSON,请执行以下操作:
var serialized = JsonConvert.SerializeObject(SavedOpData);
假设SavedOpData
是我在上面发布的类的实例,并且已经填充了数据。
答案 1 :(得分:0)
默认情况下,ServiceStack不会序列化公共字段,但您可以通过以下方式启用它:
JsConfig.IncludePublicFields = true;