如何通过Web API以HttpResponseMessage形式返回多个json对象?

3

我遇到了一个问题,使用HttpResponseMessage获取多个Json对象。如何做到不将字符串包装为Json?

目前我尝试的代码如下...

private HttpResponseMessage SetToJson(string jsonString)        
{     
  string str = "ABC";

  HttpRequestMessage Request = new HttpRequestMessage();
  Request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());
  Request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json");

  return Request.CreateResponse(HttpStatusCode.OK, new { jsonString, str }, JsonMediaTypeFormatter.DefaultMediaType);
}

功能正常,但它自己附加了\r\n"。如何修复?还有其他替代方案吗?

这是以上代码返回的响应。

{"jsonString":["{\r\n  \"resourceType\": \"Patient\",\r\n  \"entry\": []\r\n}","ABC"]}

你尝试过使用Newtonsoft的JsonConvert.SerializeObject(YOUROBJECT, Formatting.None)吗? - federico scamuzzi
是的,它会产生相同的结果。 - J.SMTBCJ15
这样可以吗? - federico scamuzzi
没有,我仍然有同样的问题。 - J.SMTBCJ15
1
你最终想要实现什么目标?目前来看,你返回的json文本格式不正确,忽略了\r\n。WebApi试图将你在数组中与str变量一起拥有的json字符串序列化。你是想向json字符串添加属性吗? - MichaelDotKnox
1个回答

3

似乎您正在对一个对象进行两次序列化。

如果您的目的是返回正确的对象,则需要将传入的jsonString反序列化为一个对象,然后创建匿名对象结果,在HTTP消息响应中再次将其序列化回JSON。

private HttpResponseMessage SetToJson(string jsonString) { 
    string str = "ABC";

    var Request = new HttpRequestMessage();
    Request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());
    Request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json");

    var obj = JsonConvert.DeserializeObject(jsonString);

    return Request.CreateResponse(HttpStatusCode.OK, new { obj, str }, JsonMediaTypeFormatter.DefaultMediaType);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接