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

时间:2017-11-14 19:52:52

标签: c# asp.net web-services json.net

我有一个以下列格式创建的大量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);

等等;

我有一个webservice方法,其返回类型对象和属性为

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

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

res.ToObject<(object)>()   //added curely braces around object because of html object tag 
但它在客户端返回空数组,但我的期望是获得如上所述的结果(一个正确的对象)。我应该如何返回res以获得所需的json输出

1 个答案:

答案 0 :(得分:0)

已编辑 - 感谢Brian
CAN 做的事情与你应该做的事情有区别......

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

你不想做的只是把JSON写到回复中......但是,因为那就是你的要求......这就是你将如何做到这一点。

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

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