将json反序列化为匿名类型列表

moh*_*sti 6 asp.net json anonymous-types servicestack

我有一个json如下:

  "[{"a":"b","c":"d"},{"a":"e","c":"f"},{"a":"g","c":"h"}]"
Run Code Online (Sandbox Code Playgroud)

现在我想把它变成匿名类型"foo"的对象列表

  var foo=new { a=string.empty , c=string.empty };
Run Code Online (Sandbox Code Playgroud)

代码是:

  ServiceStackJsonSerializer Jserializer = new ServiceStackJsonSerializer();
  dynamic foos = Jserializer.Deserialize<List<foo.GetType()>>(jsonString);
Run Code Online (Sandbox Code Playgroud)

但没有工作.

更新:

更换ServiceStackJavascriptSerializer和传球dictionary[]来解决,而不需要将问题anonymous类型

        JavaScriptSerializer jSerializer = new JavaScriptSerializer();
        var Foos = jSerializer.Deserialize<Dictionary<string, object>[]>(jsonString);
Run Code Online (Sandbox Code Playgroud)

Dan*_*Dan 2

我不知道这个Jserializer类是什么,但我知道这个JavaScriptSerializer类。不幸的是,它不支持反序列化为匿名类型。您必须创建一个像这样的具体类型:

class Foo
{
    public string a { get; set; }

    public string c { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

使用以下代码对我有用:

const string json =
    @"[{""a"":""b"",""c"":""d""},{""a"":""e"",""c"":""f""},{""a"":""g"",""c"":""h""}]";

var foos = new JavaScriptSerializer().Deserialize<Foo[]>(json);
Run Code Online (Sandbox Code Playgroud)

该变量foos将包含一个实例数组Foo