我有一个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
有什么想法吗?
答案 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
的价值,所以它是无稽之谈(如果它真的那样)。