【问题标题】:How to convert list to json如何将列表转换为json
【发布时间】:2014-08-07 14:53:26
【问题描述】:

我有一个连接到数据库并执行查询并返回数据的函数,现在我正在尝试调用该函数并将数据转换为 JSON

public List<string> getListItems()
        {
            AirportClass airport = new AirportClass();
            return JArray.Parse(airport.getListItems());
            return airport.getListItems();
        }

我不断收到此错误“'Newtonsoft.Json.Linq.JArray.Parse(string)' 的最佳重载方法匹配有一些无效参数”

我做错了什么?

我还尝试了以下方法:

public List<string> getListItems()
        {
            AirportClass airport = new AirportClass();
            JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
            JsonConvert.Serialize(airport.getListItems());
            return JsonConvert;
        }

但这也给了我一个错误'无法将类型'JavaScriptSerializer'隐式转换为Generic.List'

我也试过了:

public List<string> getListItems()
        {
            AirportClass airport = new AirportClass();
            JsonSerializer JsonConvert = new JsonSerializer();
            JsonConvert.Serialize(getListItems());
            return airport.getListItems();
        }

但这给了我另一个错误'方法'Serialize'没有重载需要1个参数'

【问题讨论】:

标签: c# asp.net json linq


【解决方案1】:

您没有保存序列化结果的返回:

JsonConvert.Serialize(airport.getListItems());
return JsonConvert;

更正了正确的返回类型。从对象转换为 JSON 会生成一个编码为 JSON 数组的字符串,因此您的返回类型是 string,而不是 List&lt;string&gt;

public string getListItems() {
  AirportClass airport = new AirportClass();
  //removed JsonConvert declaration cause that would hide the JsonConvert class, don't name variables the same name as classes
  string result = JsonConvert.SerializeObject(airport.getListItems());
  return result;
}

它不会生成列表,为此您需要单独序列化每个项目,这与序列化列表不同。在这种情况下,您只需使用循环对每个项目调用 Serialize。

【讨论】:

  • 这给了我另一个错误'方法'Serialize'没有重载需要1个参数'
  • JsonSerializer JsonConvert = new JsonSerializer(); string result = JsonConvert.Serialize(airport.getListItems()); return result;
  • 啊,我是从您的代码中复制的,应该是文档中的 SerializeObject。此外,您不应该声明一个名为 JsonConvert 的变量,框架中已经有一个名为该的类。
  • 消除了一个错误,现在我得到了一个新的返回结果 - '不能将类型'string'隐式转换为'System.Collections.Generic.List'
  • @user3723240 您能否更新您的问题以显示您尝试生成的 JSON 字符串的示例? 例如在文档中他们显示结果["Starcraft","Halo","Legend of Zelda"]。序列化为 JSON 会生成单个字符串,但您需要一个字符串列表,因此不清楚是否要单独序列化每个对象。你需要退后一步,弄清楚你想要完成什么。
猜你喜欢
  • 1970-01-01
  • 2014-03-03
  • 2020-03-21
  • 2019-06-12
  • 1970-01-01
  • 2016-11-15
  • 2021-08-27
  • 2021-02-03
  • 2022-01-23
相关资源
最近更新 更多