C# \在PutAsJsonAsync中作为json传递的转义字符

C# \在PutAsJsonAsync中作为json传递的转义字符,c#,json.net,put,dotnet-httpclient,C#,Json.net,Put,Dotnet Httpclient,我正在尝试发送PUT请求以更新某些数据。在Inspectors>文本视图的Fiddler中,数据如下所示: "{\"site\":[{\"technologyId\":1,\"isActive\":1},{\"technologyId\":2,\"isActive\":1},{\"technologyId\":3,\"isActive\":1},{\"technologyId\":4,\"isActive\":1}]}" 如果在调试时在TextViewer中打开jsonData,它将显示以

我正在尝试发送PUT请求以更新某些数据。在Inspectors>文本视图的Fiddler中,数据如下所示:

"{\"site\":[{\"technologyId\":1,\"isActive\":1},{\"technologyId\":2,\"isActive\":1},{\"technologyId\":3,\"isActive\":1},{\"technologyId\":4,\"isActive\":1}]}"  
如果在调试时在TextViewer中打开jsonData,它将显示以下内容:

{"site":[{"technologyId":1,"isActive":1},{"technologyId":2,"isActive":1},{"technologyId":3,"isActive":1},{"technologyId":4,"isActive":1}]}
当我在PutAsJsonAsync中传递jsonData时,我认为这就是传递给服务器的内容

在fiddler中,响应返回为500 Internal Server Error,如果我单击TextView,它将显示
{“Error”:“Error:invalid json”}
。据我所知,
\
是C#中
的转义字符,不应该传递。我不知道如何解决这个问题

static void Main()
{
    RunAsync().Wait();
}

static async Task RunAsync()
{
    using (var client = new HttpClient())
    {
        Uri siteTechUpdateUrl = new Uri("http://xyz/api/1234");
        // HTTP PUT
        // Update site# 16839 Technologies

        var collection = new List<SiteTechnology>();
        collection.Add(new SiteTechnology() { technologyId = 1, isActive = 1 });
        collection.Add(new SiteTechnology() { technologyId = 2, isActive = 1 });
        collection.Add(new SiteTechnology() { technologyId = 3, isActive = 1 });
        collection.Add(new SiteTechnology() { technologyId = 4, isActive = 1 });
        dynamic siteTechs= new
        {
            site = collection
        };
        string jsonData = JsonConvert.SerializeObject(siteTechs);  
        // jsonData value "{\"site\":[{\"technologyId\":1,\"isActive\":1},{\"technologyId\":2,\"isActive\":1},{\"technologyId\":3,\"isActive\":1},{\"technologyId\":4,\"isActive\":1}]}"               
        HttpResponseMessage response2 = await client.PutAsJsonAsync(siteTechUpdateUrl, jsonData);

        if (response2.IsSuccessStatusCode)
        {
            Console.ReadLine();
        }
    }
}

class SiteTechnology
{
    public int technologyId;
    public int isActive;
}
static void Main()
{
RunAsync().Wait();
}
静态异步任务RunAsync()
{
使用(var client=new HttpClient())
{
Uri siteTechUpdateUrl=新Uri(“http://xyz/api/1234");
//HTTP PUT
//更新站点#16839技术
var collection=新列表();
Add(new SiteTechnology(){technologyId=1,isActive=1});
Add(new SiteTechnology(){technologyId=2,isActive=1});
Add(new SiteTechnology(){technologyId=3,isActive=1});
Add(new SiteTechnology(){technologyId=4,isActive=1});
动态siteTechs=新建
{
站点=集合
};
字符串jsonData=JsonConvert.SerializeObject(siteTechs);
//jsonData值“{\'site\”:[{\'technologyId\':1,\'isActive\':1},{\'technologyId\':2,\'isActive\':1},{\'technologyId\':3,\'isActive\':1},{\'technologyId\':4,\'isActive\':1}”
HttpResponseMessageResponse2=等待客户端.PutAsJsonAsync(siteTechUpdateUrl,jsonData);
if(响应2.IsSuccessStatusCode)
{
Console.ReadLine();
}
}
}
课堂现场技术
{
公共int技术ID;
公众参与积极;
}

将其序列化为字符串,然后将字符串作为JSON发送

而不是:

client.PutAsJsonAsync(siteTechUpdateUrl, jsonData);
尝试:


你有权访问你要放入的服务器的代码吗?没有,我没有权限访问服务器上的代码。我使用curl-X PUT-H“Content-Type:application/json”–d@data.json测试了PUT,结果成功了。data.json文件有以下{“site”:[{“technologyId”:1,“isActive”:1},{“technologyId”:2,“isActive”:1},{”technologyId“:3,“isActive”:1},{“technologyId”:4,“isActive”:1}]}
client.PutAsJsonAsync(siteTechUpdateUrl, siteTechs);