Json反斜线

时间:2016-06-22 08:27:27

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

我有一个Web Api项目,控制器接收像这样的Json参数

 public HttpResponseMessage QueryRead([System.Web.Http.ModelBinding.ModelBinder(typeof(WebApiDataSourceRequestModelBinder))] DataSourceRequest request, string queryparams, int qryId)

字符串queryparams实际上是客户端以

形式发送的Json对象
"{\"Supplier\":{\"name\":\"Supplier\",\"type\":\"PK\",\"textvalue\":\"[{\"Supplier_Key\":2,\"Supplier_Value\":\"Foxes Beverages \"}]\",\"value\":\"[2]\"}}"

这是一个有效的json对象。 问题是字符串queryparams删除所有反斜杠,字符串变为

{"Supplier":{"name":"Supplier","type":"PK","textvalue":"[{"Supplier_Key":2,"Supplier_Value":"Foxes Beverages "}]","value":"[2]"}}

它省略了所有反斜杠,后者不是有效的json

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您的客户真的向您发送

"{\"Supplier\":{\"name\":\"Supplier\",\"type\":\"PK\",\"textvalue\":\"[{\"Supplier_Key\":2,\"Supplier_Value\":\"Foxes Beverages \"}]\",\"value\":\"[2]\"}}"

......问题出在客户端。它看起来像双重编码的JSON,好像他们已经完成了这个(在JavaScript中):

var json = JSON.stringify(originalObject);
var json2 = JSON.stringify(json);

...但是textvalue部分即使对于双重编码的JSON也是错误的,所以它并不那么简单。因此,如果(再次)他们真的向您发送,问题就在他们的最后。而且,你无法纠正它。如果它是"只是"双重编码的JSON,您可以通过解析它两次来纠正它。但它不是,因为textvalue的价值,所以它是无稽之谈(如果它真的那样)。