【发布时间】:2015-08-16 12:12:33
【问题描述】:
我是 ASP.NET MVC 和学习的新手。到目前为止,我已经弄清楚如何创建一个 JSON 对象并将其作为对请求的响应返回。但是,我无法像通常使用Java 那样将JSON 正文作为POST 请求的一部分传递。
这是我在那里执行此操作的代码 -
@Path("/storeMovement")
@POST
@Consumes("application/json")
@Produces("application/json")
public String storeTrace(String json) {
JSONObject response = new JSONObject();
JSONParser parser = new JSONParser();
String ret = "";
try {
Object obj = parser.parse(json);
JSONObject jsonObj = (JSONObject) obj;
RecordMovement re = new RecordMovement((double) jsonObj.get("longitude"), (double) jsonObj.get("latitude"), (long) jsonObj.get("IMSI"));
ret = re.Store();
// Clear object
re = null;
System.gc();
response.put("status", ret);
} catch (Exception e) {
response.put("status", "fail " + e.toString());
}
return response.toJSONString();
}
我在 ASP.NET Action 方法中尝试了相同的方法,但string 参数a 中的值是null,如调试时所见。这是 Action 方法的代码 -
public string Search(string a)
{
JObject x = new JObject();
x.Add("Name", a);
return x.ToString();
}
当我像这样使用Object(例如 - Book)时,它工作正常 -
public string Search(Book a)
{
JObject x = new JObject();
x.Add("Name", a.Name);
return x.ToString();
}
在这种情况下,这本书的名称会像我预期的那样被反序列化。 Book 类的类定义 -
public class Book
{
public int ID { get; set; }
public string Name { get; set; }
}
有人可以告诉我我做错了什么吗?有没有办法接受一个字符串并然后反序列化?我希望能够接受JSON 而不必使用对象
【问题讨论】:
-
如何调用控制器方法?您可以发布帖子请求部分吗?
-
尝试使用带有
(string Name)的方法参数 -
@vinayan 我现在使用 Chrome 的
POSTMAN附加组件进行发布请求。我添加了一个标头,指示内容类型为application/json。请求类型设置为POST并具有JSON正文 -{ "Name": "Normally", "ID": 55 } -
@AjayKelkar 检查我的回答是否有帮助
标签: c# json asp.net-mvc rest