【问题标题】:c# Newtonsoft deserialize a json string in al list of Objectsc# Newtonsoft 反序列化所有对象列表中的 json 字符串
【发布时间】:2016-07-27 19:04:48
【问题描述】:

我有以下课程

using System;

public class AppEventsClass
{
    public string title { get; set; }
    public string description { get; set; }

}

调用远程网络服务后,我检索以下 json 字符串:

{"d":"[title\":\"test\",\"description\":\"test desc\"},{\"title\":\"test2\",\"description\":\"desc test 2\"}]"}

检索该 json 字符串后,如何使用 Newtonsoft 转换 AppEventsClass 的 List 中的字符串?

我尝试了几种解决方案,但没有一个对我有用。 例如这个:

List<AppEventsClass> result = new List<AppEventsClass>();
result = JsonConvert.DeserializeObject<List<AppEventsClass>>(content).ToList();

这是序列化字符串的 .asmx:

[ScriptMethod(UseHttpGet = true)]
    public string GetEvents()
    {
        using (mySQLDataContext ctx = new secondosensoSQLDataContext())
        {
            List<eventi> eventiList = ctx.eventi.ToList();
            List<AppEventsClass> eventiClassList = new List<AppEventsClass>();
            for (int i = 0; i < eventiList.Count; i++)
            {
                AppEventsClass a = new AppEventsClass();
                a.title = eventiList[i].titlolo_evento;
                a.description = eventiList[i].descrizione_evento;
                eventiClassList.Add(a);
            }
            var json = JsonConvert.SerializeObject(eventiClassList);
            return json;
        }

    }

【问题讨论】:

  • 请添加您尝试过的一些内容,以便我们帮助解决这些问题(因为对象列表的一般反序列化 json 字符串,今天才有其他一些)
  • 到目前为止您尝试了哪些解决方案?
  • 您的 JSON 格式与您的预期结构不匹配。如果你仔细看,你会发现它只是一个包含另一个对象结构的字符串的 d 属性。您需要考虑 json 是如何被序列化的,以及您打算如何将其解析。从您的问题中看不出这些。
  • 感谢您的回复,我将编辑问题并发布我如何序列化对象。
  • 你是对的@DavidL,他的 json 格式带有 d:

标签: c# json web-services serialization deserialization


【解决方案1】:

第一个问题似乎我们检索到的响应没有正确形成 假设 json 字符串如下所示:

 {"d":[{"title":"test","description":"test desc"},{"title":"test2","description":"desc test 2"}]}

反序列化的正确类应该是这样的

public class Rootobject
{
    public D[] d { get; set; }
}

public class D
{
    public string title { get; set; }
    public string description { get; set; }
}

谢谢

PS。这是一个工作示例:

class Program
{
    static void Main(string[] args)
    {
        string json = "{\"d\":[{title:\"test\",description:\"test desc\"},{title:\"test2\",description:\"desc test 2\"}]}";
        var result = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(json);
    }
}

public class Rootobject
{
    public D[] d { get; set; }
}

public class D
{
    public string title { get; set; }
    public string description { get; set; }
}

【讨论】:

  • 感谢Mnimonic的回复,请问如何使用?
  • 这当然是假设他的 json 格式正确,但事实并非如此。所以在问题的当前状态下,这并没有正确回答。
  • 是的,你是对的,我在 json 上也有错误!
猜你喜欢
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-05
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
相关资源
最近更新 更多