现在,我正在使用 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()”时处理转换,而不是预先处理,但这是一个小细节。我不确定我是否需要... JavascriptSerializer 出现在上面填充的复杂对象的图片中。(喜欢人)
澄清...以上是我已经拥有的实现...如果可以的话,我想摆脱我自己在这方面的实现...但是能够保留那个“界面”
我正在寻找的是可能支持上述内容的东西,但它可能不需要,因为我可以保留我当前的 JsonObject,但很明显摆脱它会很好......
更重要的是,支持这里描述的场景的东西......举一个下面的例子,我们可以想象有一个人休息服务......我希望能够返回部分人对象,如下面的例子所示:
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" } }
显然,我不是在寻找直接从那些“REST”调用形成 JSON 的框架,我只需要能够控制序列化过程(在上下文中),这样我就可以返回像上面这样的人。Person 也可能不是根对象,它可能是人员列表或引用人员的对象......
所以一般在客户端我希望能够类似的东西:
Expand: "Age, LastName"...
Include: "/rest/address"...
语法现在不重要了...
我可以继续扩展我自己的框架,但我宁愿专注于实际任务,然后找到一个适合我需要的 JSON 框架......我只是还没有,或者我只是没有知道如何在该特定框架中实现我所需要的...
我已经可以使用“JavaScript”序列化程序和我的 JsonObject 以某种方式使用自定义类型解析器正确地做到这一点,但我想寻找可能比这更容易使用的可能性......
另外我注意到 JSON.NET 和其他的性能比 JavaScript 序列化器等更好,所以为什么不看看他们是否可以支持这个场景。