【发布时间】:2014-03-20 18:37:00
【问题描述】:
我的代码如下。当我发布一个包含 \v 的 JSON 正文时,服务器会收到它无法解析的 JSON。有关如何使其工作的任何帮助?
编辑:好吧,关于我的服务器无法解析它的论点很弱,但http://jsonlint.com/ 也抱怨它。 :)
在我的 emacs 中是这样的:
{"key":"a^Kb"}
^K 我认为是单个字符。
代码:
using RestSharp;
using System;
using System.Collections.Generic;
namespace testapp
{
class Program
{
static void Main(string[] args)
{
var client = new RestClient();
var request = new RestRequest();
request.Method = Method.POST;
request.RequestFormat = DataFormat.Json;
request.Resource = "http://example.com/";
var data = new Dictionary<string, string>();
data.Add("key", "a\vb");
request.AddBody(data);
var response = client.Execute<Dictionary<string, string>>(request);
}
}
}
【问题讨论】:
-
它序列化成什么? PostSharp 生成
{"key":"a\u000bb"},JSONLint 接受它为有效。 -
顺便说一句,我说的是“PostSharp”,但我的意思是“Json.NET”。我没想到,RestSharp 在名称上与 PostSharp 太接近了。此外,RestSharp 通过线路发送文字 0b(即 \v)字节。也许这在服务器上没有正确解释。
-
我正在使用 Ruby Sinatra,我阅读了
request.body.rewind的正文,然后是JSON.parse request.body.read...