.NET的JSON框架可以在运行时调整对象内容



现在,我正在使用JavaScript序列化器从多个REST服务返回JSON,并具有" JSONOBJECT"的动态实现,我可以:

dynamic json = new JsonObject();
json.SomeThing = GetSomeThing();
json.AString = "Hello World";
json.Person = new Person{Name="Erik", LastName="Hansen", Age=35};

等等...它在我称为" tostring()"的时候处理转换,而不是前面,但这是一个较小的细节atm。我不确定我是否需要... JavaScriptSerializer将其插入上面填充的复杂对象上的图片中。(喜欢人)

澄清...以上是我已经拥有的实现...如果我能够……我想摆脱自己的实现……但是能够保持"接口"

我正在寻找的是可能支持上述内容,但是它可能不需要,因为我可以保持当前的jsonobject,但显然摆脱了...

更重要的是,支持这里描述的方案...在下面以示例为例,我们可以想象拥有一个人休息服务... IDD希望能够返回部分人对象,如下所示:

class Person
{
  string Name;
  string LastName;
  int Age;
  Address Addr;
}
/rest/person/5
Json = { Name: "some name" }
/rest/person/5?Expand=LastName, Age
Json = { Name: "some name", LastName: "Some Last Name", Age: 35 }
/rest/person/5?Expand=Address
Json = { Name: "some name", Address: { ... } }
Nested stuff
/rest/person/5?Expand=Address, Address.Street
Json = { Name: "some name", Address: { Street: "bla" } }

显然,我不是在寻找直接从那些"休息"调用来形成JSON的框架,我只需要能够控制序列化过程(在上下文中),以便我可以返回上面的人。人可能也不是根对象,它可能是引用人员的人或对象的列表...

因此,通常在客户端,我希望能够像以下方式一样。

Expand: "Age, LastName"... 
Include: "/rest/address"...

语法现在不重要...

我可以继续为其扩展自己的框架,但是我宁愿专注于实际任务,然后找到一个适合我需求的JSON框架...我要么还不能不知道如何实现我在特定框架中需要的东西...

我可以使用自定义类型解析器以某种方式使用" JavaScript"序列化器和我的JSONOBJECT正确地做到这一点,但是我想搜索可能比这更容易使用的可能性...

我还注意到JSON.NET和其他人的性能比JavaScript Serializers等更好,所以为什么不看看他们是否可以支持该方案。

json.net具有支持动态对象生成的命名空间newtonsoft.json.linq,并且能够从匿名和复杂类型

中生成

http://james.newtonking.com/projects/json/help/index.html?topic=html/linqtojson.htm

最新更新