C# Json.net:如何从[WebMethod]返回JObject?

C# Json.net:如何从[WebMethod]返回JObject?,c#,asp.net,json,json.net,webmethod,C#,Asp.net,Json,Json.net,Webmethod,我正在测试。我想使用它的linq to json语法从属性为[WebMethod]的函数返回json,但我遇到了错误 例如,如果我在代码隐藏中使用 [WebMethod, ScriptMethod(UseHttpGet = true)] public static JObject GetStuff() { return new JProperty("string", "value"); } 正在由以下javascript调用: PageMethods.GetStuff(/* par

我正在测试。我想使用它的linq to json语法从属性为[WebMethod]的函数返回json,但我遇到了错误

例如,如果我在代码隐藏中使用

[WebMethod, ScriptMethod(UseHttpGet = true)]
public static JObject GetStuff() {
    return new JProperty("string", "value");
}
正在由以下javascript调用:

  PageMethods.GetStuff(/* parameters */, function(data) {
      // do stuff with data
  });
我得到错误“无法访问Newtonsoft.Json.Linq.JValue上的子值”


我应该返回什么来确保我的javascript数据对象充满JSON?

为什么不简单地返回对象并将JSON序列化留给底层基础结构:

public class MyModel
{
    public string Value { get; set; }
}
在您的web方法中:

[WebMethod, ScriptMethod(UseHttpGet = true)]
public static MyModel GetStuff() {
    return new MyModel {
        Value = "some value"
    };
}

我宁愿返回纯JSON,因为底层基础设施不是特别简单。我还希望返回一个字典和一个数组,其中字典将包含数组中经常出现的项,这样我可以减少JSON大小。@sh54,通过创建自定义对象,您将减少JSON大小,因为您将只包含所需的属性。JSON.Net知道如何处理字典、数据表、,以及MS序列化程序阻塞的其他类型。。。Json.Net被包含在VS2012/.Net 4.5的新web api的开箱即用中的主要原因。。。