Jquery将JsonString发布到c#。我该如何解析它

时间:2017-05-04 12:25:09

标签: c# json parsing

我在这里有一个Json并将其发布到服务器。

    newJson.push({ Klasse_Id: parseInt(key), MaxTeilnehmer: value.MaxTeilnehmer });
$http.post('@Url.Content("~/Gw2RaidCalender/SaveEvent")', {
                    model: saveEventObject,
                    klassenModel: JSON.stringify(newJson)
                }).then(function successCallback(result) {
                    console.log(result.data);
                }),
                    function errorCallback(result) {
                        console.log(result.data);
                    };

现在我的C#代码中有这个

public string SaveEvent(EventModel model, string klassenModel)
    {
        JObject result = JObject.Parse(klassenModel);

现在我收到此错误

Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray.

看起来它不是一个有效的Json字符串!?

"[{\"Klasse_Id\":1,\"MaxTeilnehmer\":2}]"

但是我在https://jsonlint.com/上检查了它,并说它有效。

我想从这个Json中获取值。

编辑:

我解决了它,现在我可以保存数据了

var jsonKlassen = JArray.Parse(klassenModel);
            foreach (JObject content in jsonKlassen.Children<JObject>())
            {
                int klasse_Id = (int)content.Property("Klasse_Id").Value;
                int maxTeilnehmer = (int)content.Property("MaxTeilnehmer").Value;
                var klassenmodel = new Klasse2EventModel
                {
                    Klasse_Id = klasse_Id,
                    MaxTeilnehmer = maxTeilnehmer,
                    Event_Id = newEventId
                };
                _db.Klasse2EventModel.Add(klassenmodel);
                _db.SaveChanges();
            }

1 个答案:

答案 0 :(得分:0)

因为此JSON字符串包含数组。试试这个:

test