C# 在C中将json字符串传递给Rest服务(POST)时出错#

C# 在C中将json字符串传递给Rest服务(POST)时出错#,c#,json,rest,C#,Json,Rest,我正试图将JSON数据发送到REST服务,但出现错误。JSON数据是{“Project”:111,“itemType”:123,“fields”:{“name”:“Test”,“Description”:“Tseting only”} 下面是代码 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);//I'm passing the url from as a parameter request.Headers["Aut

我正试图将JSON数据发送到REST服务,但出现错误。JSON数据是
{“Project”:111,“itemType”:123,“fields”:{“name”:“Test”,“Description”:“Tseting only”}

下面是代码

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);//I'm passing the url from as a parameter
request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(System.Text.Encoding.Default.GetBytes("xxxx:xxxx"));
request.ContentType = "text/json";
request.Method = "POST";
//string names = "praneeth";
using (StreamWriter streamWriter = new StreamWriter(request.GetRequestStream()))
{
    string json =
        "{ \"project\": 111," +
        "\"itemType\": 123," +
        "\"fields\":\"{ \"name\":\"Test\"," + "\"description\":\"Testing only\"}\"}";
    streamWriter.Write(json);
}
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader sreader = new StreamReader(dataStream);
string responsereader = sreader.ReadToEnd();
response.Close();
我得到的错误是

{“meta”:{“status”:“Bad” 请求,“时间戳”:“2015-08-04T22:40:55.645+0000”,“消息”:“无法” 从字符串值实例化java.util.LinkedHashMap类型的值 (“{”);在[Source: org.glassfish.jersey.message.internal。EntityInputStream@50e3274b; 行:1,列:33](通过参考链: com.jamasoftware.contour.rest.v1.domain.RequestItem[\“fields\”])“}


您当前正在以字符串形式发送
字段
,该字符串对于该属性的目标类型无效。请去掉封装的引号,将其作为对象发送

例如:

 string json =
      "{"
       + "\"project\": 111,"
       + "\"itemType\": 123,"
       + "\"fields\": { "
           + "\"name\" : \"Test\","
           + "\"description\":\"Testing only\""
       + "}" +
       "}";
 streamWriter.Write(json);

我还建议从您自己的对象进行反序列化,而不是串联字符串文本。这使得生成JSON更容易、更安全。

您说JSON数据如下:

{"Project":111,"itemType":123,"fields":{"name":"Test","Description":"Tseting only"}}
但你实际上在构建的是:

{ "project": 111,"itemType": 123,"fields":"{ "name":"Test","description":"Testing only"}"}
这不是有效的JSON


因此,删除这些额外的引号。

答案很简单,因为您的json无效…放置一个断点,获取您拥有的json,并将其粘贴到。然后开始使用真正的json解析器来形成您的json字符串…步骤1)验证您是否可以使用Postman:@KevinCrowell等工具成功命中web服务。再次查看源代码ine会产生这个错误吗?当然是来自远端。所以我们在步骤1中打了一个绿色的勾。下一步是什么?@EZI谢谢你的帮助。现在我可以成功发布数据了。