如何在C#中解析此JSON(与Vk.com Api的生成执行请求有关)

时间:2015-09-05 17:32:43

标签: c# json parsing json.net

如何在C#中解析这个Json,我尝试使用JsonConvert.DeserializeObject,但我认为我的班级不适合JsonConvert

我在Json收到回复,看起来像这样:

"{"response":[{"id5":[1,43,42]},{"id22":[7,9,10,3]}]}"

 "
        {
          "response":
            [
               {"id5":[1,43,42]},
               {"id22":[7,9,10,3]}
            ]
        }
"

更新/解决: 我对json很熟悉,我有任务生成一些请求和答案格式取决于我的请求字符串..所以我的请求字符串生成错误,我收到了无效的Json。

正确生成:

sb.Append("return [");
            foreach (string id in ids)
            {
                string q = "{\"id\" : " + id + ", \"friends\": :API.friends.get({user_id:" + id + "})}";
                sb.Append(q);
                sb.Append(',');
            }
            sb[sb.Length - 1] = ']';
            sb.Append(';');

3 个答案:

答案 0 :(得分:0)

你看过Json课吗? https://msdn.microsoft.com/en-us/library/windows/apps/br229889.aspx

你需要这样的东西(没有编译):

JsonObject obj = JsonObject.Parse(your_resonse_string);
IJsonValue siri = ParseJsonObject(obj, "response");
JsonArray ids= VehicleMonitoringDelivery.GetArray();
foreach (var id in ids)
{
     (...)
}

答案 1 :(得分:0)

您可以使用此类反序列化您的json

public class MyResponse
{
    public List<Dictionary<string,List<int?>>> response { get; set; }
}

现在你的代码将是

var obj = JsonConvert.DeserializeObject<MyResponse>(json);

答案 2 :(得分:-1)

很难像类一样代表这个JSON。

看起来它是以错误的方式生成的。

如果你可以改变生成,最好以这种方式做到:

"
    {
      "response":
        [
           {"id":"id5","array":[1,43,42]},
           {"id":"id22":,"array":[7,9,10,3]}
        ]
    }
"

P.S。我添加了“id”和“array”

如果手动上课很难,请尝试this