json.net将string数据转换为List<>报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json.net将string数据转换为List<>报错相关的知识,希望对你有一定的参考价值。

using System.Collections.Generic;
using System.Web.Script.Serialization;
........
var prids ="[ \"area\":\"58\",\"id\":\"5234\" , \"area\":\"58\",\"id\":\"5236\" , \"area\":\"58\",\"id\":\"5249\" ]";
var json = new javascriptSerializer();
var list = json.Deserialize(prids, typeof(List<CheckFb>)) as List<CheckFb>;
.....

[Serializable]
public class CheckFb

public string area get; set;
public string id get; set;

运行会报错
无法将类型为“System.String”的对象转换为类型“System.Collections.Generic.List`1[CheckFb]”

求解惑

参考技术A 没见过这么做转换的,你遍历prids,截取字符串,然后再添加到集合里面吧。 参考技术B 先转换为数组,在转为集合试下

如何使用 json.net 将 c# 通用列表转换为 json?

【中文标题】如何使用 json.net 将 c# 通用列表转换为 json?【英文标题】:How to convert c# generic list to json using json.net? 【发布时间】:2011-03-29 18:38:59 【问题描述】:

我正在将我的数据表转换为 c# 通用列表。

 DataTable dt = mydata();
 List<DataRow> list = dt.AsEnumerable().ToList();

现在我如何使用 json.net 将此 list 转换为 json?任何建议。

json格式的样本应该是这样的,

"Table" : ["userid" : "1","name" : "xavyTechnologies","designation" : "",
"phone" : "9999999999","email" : "test@test.com","role" : "Admin","empId" : "",
 "reportingto" : "","userid" : "2","name" : "chendurpandian","designation" :
 "softwaredeveloper","phone" : "9566643707","email" : "chendur.pandia@gmail.com",
 "role" : "Super User","empId" : "1","reportingto" : "xavyTechnologies",
"userid" : "3","name" : "sabarinathan","designation" : "marketer","phone" :
"66666666666","email" : "bala3569@gmail.com","role" : "User",
 "empId" : "2","reportingto" : "chendurpandian"]

【问题讨论】:

【参考方案1】:

这是一个例子:

using System;
using System.Data;
using Newtonsoft.Json.Linq;

class Test

    static void Main()
    
        DataTable table = new DataTable();
        table.Columns.Add("userid");
        table.Columns.Add("phone");
        table.Columns.Add("email");

        table.Rows.Add(new[]  "1", "9999999", "test@test.com" );
        table.Rows.Add(new[]  "2", "1234567", "foo@test.com" );
        table.Rows.Add(new[]  "3", "7654321", "bar@test.com" );

        var query = from row in table.AsEnumerable()
                    select new 
                        userid = (string) row["userid"],
                        phone = (string) row["phone"],
                        email = (string) row["email"]            
                    ;

        JObject o = JObject.FromObject(new
        
            Table = query
        );

        Console.WriteLine(o);
    

文档:LINQ to JSON with Json.NET

【讨论】:

示例使用 linq 但我想使用通用列表 @Pandiya:所以只需将table.AsEnumerable() 位更改为list。鉴于您在示例中使用了DataTable,我认为您想要DataTable 作为您的原始来源......否则您为什么要为那段代码烦恼?【参考方案2】:
var oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string sJSON = oSerializer.Serialize(yourList);

参考: http://blogs.microsoft.co.il/blogs/pini_dayan/archive/2009/03/12/convert-objects-to-json-in-c-using-javascriptserializer.aspx

【讨论】:

这似乎对我不起作用,sJON 返回空

以上是关于json.net将string数据转换为List<>报错的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 json.net 将 c# 通用列表转换为 json?

如何使用 json.net 将 c# 通用列表转换为 json?

如何使用 json.net 将数据表转换为 json 字符串?

JSON.NET数组转换

怎样用C#把JSON数据转换为list或数组

如何将 C# List<string[]> 转换为 Javascript 数组?