gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:47:19 28 4
gpt4 key购买 nike

如何在 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":"An error has occurred.","ExceptionMessage":"Cannot access child value on Newtonsoft.Json.Linq.JValue.","ExceptionType":"System.InvalidOperationException","StackTrace":" at Newtonsoft.Json.Linq.JToken.get_Item(Object key)\r\n at TestWebApi.Controllers.ValuesController.InsertNewCustomer(Object value) in c:\Users\sezer.erdogan.PROMAKS\Desktop\LYLWebApi\LYLWebApi\Controllers\ValuesController.cs:line 64\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.b__9(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary2 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 at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.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.TaskAwaiter1.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 at System.Web.Http.Controllers.AuthenticationFilterResult.d__0.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 at 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# - 如何在 C# 中解析 json 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37809772/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com