如何在C#中解析JSON列表 - c#

如何在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
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
1.GetResult()\ r \ n在
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
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
1.GetResult()\ r \ n在
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…