如何在c#解析此json列表?我已经在服务端阅读了此列表。我使用的是Web api。
[
{ "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
值)中
c:\ Users \ sezer.erdogan.PROMAKS \ Desktop \ LYLWebApi \ LYLWebApi \ Controllers \ ValuesController.cs:line
在lambda_method(Closure,Object,Object [])\ r \ n在64 \ r \ n
System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor。 c__DisplayClass10.b__9(Object
实例,Object [] methodParameters)\ r \ n位于
System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object
实例,Object []参数)\ r \ n位于
System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext
controllerContext,IDictionary 2 arguments, CancellationToken
1.GetResult()\ r \ n在
cancellationToken)\r\n--- End of stack trace from previous location
where exception was thrown ---\r\n at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task)\r\n at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task)\r\n at
System.Runtime.CompilerServices.TaskAwaiter
System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\ r \ n--
从先前引发异常的位置开始的堆栈跟踪结束
--- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务
任务)\ r \ n
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)\ r \ n
System.Runtime.CompilerServices.TaskAwaiter 1.GetResult()\r\n at
1.GetResult()\ r \ n在
System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()\r\n---
End of stack trace from previous location where exception was thrown
---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task)\r\n at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task)\r\n at
System.Runtime.CompilerServices.TaskAwaiter
System.Web.Http.Controllers.AuthenticationFilterResult.d__0.MoveNext()\ r \ n ---
从先前引发异常的位置开始的堆栈跟踪结束
--- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务
任务)\ r \ n
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)\ r \ n
System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\ r \ n在
System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()“}
参考方案
在json2csharp.com上,您可以为JSON生成类,对于JSON,它们的外观如下:
public class Adjustment
{
public string CardNumber { get; set; }
public string TimeStamp { get; set; }
public double Point { get; set; }
}
public class RootObject
{
public int Id { get; set; }
public Adjustment Adjustment { get; set; }
}
然后反序列化它:
List<RootObject> o = JsonConvert.DeserializeObject<List<RootObject>>(string json)
如何在C#上使用参数调用JavaScript函数 - c#我想用C#中的HttpWebRequest或WebRequest调用JavaScript函数。我不想使用可以称为invokemember的Web浏览器。这是我的代码:public void MyWebRequest(string url, string method, string data) { request = WebRequest.Create(ur…
如何在C#中的循环过程中多次更改控件的属性 - c#我正在尝试做这样的事情:int i; while(true) { label1.Text = i.ToString(); i++; Thread.Sleep(500); } (实际上,我正在尝试做更复杂的事情,这更有意义,但这只是我的问题的一个简单示例)我期望标签的文本每1/2秒更改一次..但是它被卡住了。谢谢 参考方案 您不能让GUI线程进入睡眠状态(因为…
C#无法将类型为“ System.Double”的对象转换为类型为“ System.Single” - c#在判断此问题已得到回答之前,请阅读说明。我在下面有这个简单的代码:Dictionary<string, object> d = new Dictionary<string, object>(); d.Add("key" , 30d); System.Diagnostics.Debug.WriteLine($…
如何在C#Linq中找到集合的最小差异对象 - c#我有收藏Class MyData { int f1; int f2; int f3; int f4; } var mycollection =List<MyData>(); 我需要返回字段f1和f3之间具有最小差异的对象。我在下面查询了mycollection.select(obj => obj.f1 - obj.f3).Min(); 但是…
如何在C#中以正确的方式传递参数? - c#我的存储过程如下:ALTER PROCEDURE [dbo].[Insert_tblCustomer] -- Add the parameters for the stored procedure here @Username varchar(20) = null, @Password varchar(20)= null, @UserType varchar…