C# \在PutAsJsonAsync中作为json传递的转义字符
我正在尝试发送PUT请求以更新某些数据。在Inspectors>文本视图的Fiddler中,数据如下所示: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,它将显示以
"{\"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);