如何在C#中解析这个JSON列表?我已经在我的服务端读取了这个列表。我正在使用Web API。
产生了以下错误:
{"Message":"发生错误。","ExceptionMessage":"无法访问Newtonsoft.Json.Linq.JValue上的子值。","ExceptionType":"System.InvalidOperationException","StackTrace":"在Newtonsoft.Json.Linq.JToken.get_Item(Object key)\r\n 在TestWebApi.Controllers.ValuesController.InsertNewCustomer(Object value) 位置 c:\Users\sezer.erdogan.PROMAKS\Desktop\LYLWebApi\LYLWebApi\Controllers\ValuesController.cs:line 64\r\n 在lambda_method(Closure , Object , Object[] )\r\n 在System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.b__9(Object instance, Object[] methodParameters)\r\n 在System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\r\n 在System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- 前一个位置引发了异常的堆栈跟踪的结尾 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n 在 System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\r\n--- 前一个位置引发了异常的堆栈跟踪的结尾 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n 在 System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()\r\n--- 前一个位置引发了异常的堆栈跟踪的结尾 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n 在 System.Web.Http.Controllers.AuthenticationFilterResult.d__0.MoveNext()\r\n--- 前一个位置引发了异常的堆栈跟踪的结尾 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n 在 System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()"}
[
{ "Id":1,
"Adjustment":{
"CardNumber": "1234567895678",
"TimeStamp": "2016-06-14 12:00:56",
"Point": -13.09
}
},
{ "Id":2,
"Adjustment":{
"CardNumber": "2345673245689",
"TimeStamp": "2016-06-14 12:05:43",
"Point": 2.3
}
}
]
我按照这种方式做了,但它不起作用:我该如何修复我的代码?你有什么建议吗?我使用Fiddler发送了请求体。
public object InsertNewCustomer([FromBody] object value)
{
var returns = new List<object>();
if (value == null)
{
returns.Add(new { ReturnCode = "-1" });
return Json(returns, JsonRequestBehavior.AllowGet).Data;
}
var jsonstr = @value.ToString();
var jsonVal = JArray.Parse(jsonstr);
Cariler newcustomer = new Cariler();
using (TransactionScope scope = new TransactionScope())
{
foreach (JObject root in jsonVal)
{
foreach (KeyValuePair<String, JToken> app in root)
{
var card = (String)app.Value["CardNumber"];
var time = (String)app.Value["TimeStamp"];
var point = (byte)app.Value["Point"];
newcustomer.CardNum = card;
newcustomer.Time = time;
newcustomer.Point = point;
context.Cariler.Add(newcustomer);
context.SaveChanges();
}
}
scope.Complete();
returns.Add(new { ReturnCode = "0" });
return Json(returns, JsonRequestBehavior.AllowGet).Data;
}
}
产生了以下错误:
{"Message":"发生错误。","ExceptionMessage":"无法访问Newtonsoft.Json.Linq.JValue上的子值。","ExceptionType":"System.InvalidOperationException","StackTrace":"在Newtonsoft.Json.Linq.JToken.get_Item(Object key)\r\n 在TestWebApi.Controllers.ValuesController.InsertNewCustomer(Object value) 位置 c:\Users\sezer.erdogan.PROMAKS\Desktop\LYLWebApi\LYLWebApi\Controllers\ValuesController.cs:line 64\r\n 在lambda_method(Closure , Object , Object[] )\r\n 在System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.b__9(Object instance, Object[] methodParameters)\r\n 在System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\r\n 在System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- 前一个位置引发了异常的堆栈跟踪的结尾 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n 在 System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\r\n--- 前一个位置引发了异常的堆栈跟踪的结尾 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n 在 System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()\r\n--- 前一个位置引发了异常的堆栈跟踪的结尾 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n 在 System.Web.Http.Controllers.AuthenticationFilterResult.d__0.MoveNext()\r\n--- 前一个位置引发了异常的堆栈跟踪的结尾 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n 在 System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()"}