servicestack,Json,Serialization,servicestack" /> servicestack,Json,Serialization,servicestack" />

无法使用ServiceStack序列化程序反序列化简单Json

无法使用ServiceStack序列化程序反序列化简单Json,json,serialization,servicestack,Json,Serialization,servicestack,由于某些原因,此代码不起作用。 我错过了什么?它是一个简单的类,Json非常基本 using System; using ServiceStack.Text; namespace Test { public class Boo { public string id { get; set; } public string name { get; set; } public override string ToString () { retur

由于某些原因,此代码不起作用。 我错过了什么?它是一个简单的类,Json非常基本

using System;
using ServiceStack.Text;

namespace Test
{
  public class Boo
  {
    public string id { get; set; }
    public string name { get; set; }

    public override string ToString ()
    {
      return string.Format ("[Boo: id={0}, name={1}]", id, name);
    }
  }
  class MainClass
  {
    public static void Main (string[] args)
    {
      Console.WriteLine ("{name: \"Superman\", id: 1}".FromJson<Boo>());
    }
  }
}
使用系统;
使用ServiceStack.Text;
名称空间测试
{
公共类Boo
{
公共字符串id{get;set;}
公共字符串名称{get;set;}
公共重写字符串ToString()
{
返回string.Format(“[Boo:id={0},name={1}]”,id,name);
}
}
类主类
{
公共静态void Main(字符串[]args)
{
Console.WriteLine({name:\'Superman\',id:1}.FromJson());
}
}
}

您的键不是字符串。ServiceStack的序列化程序希望JSON的键是有效的JSON字符串

试试这个:

Console.WriteLine ("{\"name\":\"Superman\",\"id\":1}".FromJson<Boo>());
Console.WriteLine(“{\'name\':\'Superman\',\'id\':1}”)。FromJson();

不确定间距是否重要,但我尽量保持紧凑。

FYI,我在mono下运行此功能。是的,规范要求键为带引号的字符串。JavaScript对象文本不强制使用引号,这就是为什么它经常与有效的JSON混淆的原因,而有效的JSON确实如此。