如何从 WebServices 将 JObject 作为 json 对象返回



我有一个以以下格式创建的Jobject类型的庞大数据集

{
    "key_1": {"id":"1", "name":"some1", ....},
    "key_2": {"id":"", "name":"some2", .....}
}

我使用以下代码创建了这样的对象结构:

JObject res = new JObject();
JObject jo = new JObject();
jo.Add("id", "1");
jo.Add("name", "some1");
res.Add("key_1", jo);

等等;

我有一个网络服务方法,它的返回类型对象和属性为 [

WebMethod][ScriptMethod(ResponseFormat = ResponseFormat.Json(]

如何在 AJAX 请求中将此数据作为对象返回。我试过

res。ToObject<(object(>((//由于 html 对象标签,在对象周围添加了大括号
,但它在客户端返回空数组集合,但我的期望是获得如上所述的结果(一个正确的对象(。我应该如何返回 res 以获得所需的 json 输出

已编辑 - 谢谢布莱恩
你可以做的事情和你应该做的事情是有区别的......

退回您的 JObjects 的正确方法取决于您......创建代表它们的真实对象...创建可序列化的键/值对...

您不想做的只是将 JSON 写到响应中...... 但是,既然这实际上是您的要求...这是您将如何做到这一点。

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void GetObject()
{
    string json = GetJsonFromDatabase();
    HttpContext.Current.Response.Write(json);
}

请注意,您的方法必须返回 void,并且您将 json 直接写入响应流。 超级脏...超级丑...请不要这样做。 您还必须手动将其转换为js端的对象。

最新更新