我想构建自己的JSON,并让服务返回一个字符串,这是代码
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
public string GetCurrentCart()
{
//Code ommited
string jsonClient = null;
var j = new { Content = response.Content, Display=response.Display, SubTotal=response.SubTotal};
var s = new JavaScriptSerializer();
jsonClient = s.Serialize(j);
return jsonClient;
}
我得到的响应包含用于在c#中的字符串中创建\的\“。
以下是响应。
"{\"Content\":\"\\r\\n\\u003cdiv\\u003e\\r\\n\\u003cinput type=\\\"hidden\\\" name=\\\"__VIEWSTATE\\\" id=\\\"__VIEWSTATE\\\" value=\\\"\/wEPDwUBMA9kFgJmD2QWAmYPZBYGAgMPFgIeBFRleHQFKFlvdSBoYXZlIG5vIGl0ZW1zIGluIHlvdXIgc2hvcHBpbmcgY2FydC5kAgUPFgIeB1Zpc2libGVoZAIHDxQrAAIPFgIfAWhkZGQYAQUMY3RsMDEkbHZDYXJ0D2dkoWijqBUJaUxmDgFrkGdWUM0mLpgQmTOe8R8hc8bZco4=\\\" \/\\u003e\\r\\n\\u003c\/div\\u003e\\r\\n\\r\\n\\u003cdiv class=\\\"block block-shoppingcart\\\"\\u003e\\r\\n \\u003cdiv class=\\\"title\\\"\\u003e\\r\\n \\u003cspan\\u003eShopping Cart\\u003c\/span\\u003e\\r\\n \\u003c\/div\\u003e\\r\\n \\u003cdiv class=\\\"clear\\\"\\u003e\\r\\n \\u003c\/div\\u003e\\r\\n \\u003cdiv class=\\\"listbox\\\"\\u003e\\r\\n You have no items in your shopping cart.\\r\\n \\r\\n \\r\\n \\u003c\/div\\u003e\\r\\n\\u003c\/div\\u003e\\r\\n\",\"Display\":\"You have no items in your shopping cart.\",\"SubTotal\":null}"
值已正确编码,但json本身未正确格式化。这些导致它破烂不堪。
我该如何返回一个字符串,而在’的前面没有\呢?
目前,您的网络方法与String
一起返回ResponseFormat = WebMessageFormat.Json
。它遵循字符串的JSON编码。对应于www.json.org,字符串中的所有双引号将使用反斜杠转义。因此,您目前有双重JSON编码。
返回任何类型数据的最简单方法是将GetCurrentCart()
Web方法的输出类型更改为Stream
或Message
(从System.ServiceModel.Channels
)更改为String
。
见http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-
programming-model-
web.aspx
,http://msdn.microsoft.com/en-us/library
/ms789010.aspx和http://msdn.microsoft.com/zh-
cn/library/cc681221(VS.90).aspx,以获取代码示例。
因为您没有在问题中写下使用的是哪个.NET版本,所以建议您使用通用且最简单的方法:
public Stream GetCurrentCart()
{
//Code ommited
var j = new { Content = response.Content, Display=response.Display,
SubTotal=response.SubTotal};
var s = new JavaScriptSerializer();
string jsonClient = s.Serialize(j);
WebOperationContext.Current.OutgoingResponse.ContentType =
"application/json; charset=utf-8";
return new MemoryStream(Encoding.UTF8.GetBytes(jsonClient));
}
我希望自动将对象序列化为JSON的便利性和返回原始JSON字符串的能力。我正在使用Gson而不是Jackson,因为Gson已经在我的应用程序中有一段时间了,我有现有的调整,转换器,和注释遍布我的应用程序。 我可以自动序列化POJO的: 我希望这也能奏效: 现在的结果是一个转义值: 而不是:
问题内容: AFAIK在ASP.NET Core Web Api中返回数据的标准方法是使用并提供例如结果。这对对象很好用,但是如果我以某种方式获得了JSON字符串,而我只想将该JSON返回给调用者怎么办? 例如 ASP.NET Core在这里所做的是,它接收JSON字符串,然后再次将其包装到JSON中(例如,它转义了JSON) 返回纯文本确实可以通过提供“ RAW”内容来工作,但是它还将响应的内容
我将对象作为JSON字符串存储在数据库中。我想制作一个公开这些字符串的REST服务。然而,当我编写方法时,我返回的字符串中的引号被转义了。例如,我包含了一个返回字符串的方法,
我在spring web应用程序中有以下要求: 从Elasticsearch中查找对象并在谷歌地图上显示(首选json格式) 从Elasticsearch中查找对象(与上面的查询相同),并将其显示在列表中(首选java对象格式,以便在JSP页面上显示) 我使用SearchRequestBuilder编写了Java API搜索,效果很好: 但是为了在谷歌地图上显示它,我更喜欢从elasticsear
问题内容: 我正在开发一个使用JSON进行服务器通信的Android应用,当我尝试解析json文件时遇到了一个奇怪的问题。 这是我来自服务器的json 我通过调用地址Json-object 获得City的价值。对于这种情况,我期望为空(这是optString的意思吗?),但实际上它包含字符串“ null”。因此,进一步的null或isEmpty- checks将返回false,因为String包含
问题内容: 是否可以将字符串转换为字节数组,然后在Java或Android中将其转换回原始字符串? 我的目标是将一些字符串发送到微控制器(Arduino)并将其存储到EEPROM(仅1 KB)中。我尝试使用MD5哈希,但它似乎只是一种单向加密。我该怎么办? 问题答案: 我建议使用字符串的成员,但 使用显式编码 : 通过使用一种显式编码(以及一种支持所有Unicode的编码),您可以避免仅调用等问题