1

现在,我正在使用 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 序列化器等更好,所以为什么不看看他们是否可以支持这个场景。

4

1 回答 1

0

Json.NET 有一个支持动态对象生成的命名空间 Newtonsoft.Json.Linq,并且能够从匿名和复杂类型生成

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

于 2013-02-26T15:41:14.060 回答