【问题标题】:How to convert a Json string to List in c#如何在c#中将Json字符串转换为List
【发布时间】:2020-03-15 06:56:35
【问题描述】:

在网络服务中,我尝试将 jzonString 转换为列表。

{
    "name": "Test",
    "Fname": "Testing",
    "S1": "Content1",
    "S2": "Content2",
    "S3": "Content3"
}
[WebMethod]
        public int Create(string Detils, string Companyid)
        {
            try
            {

                dynamic ScheduleShift = new JavaScriptSerializer().DeserializeObject(Detils);
                \\ i need to set data to list or to an object

                InvDetails objDetails = new InvDetails();
                List<InvDetails> lstDetails = new List<InvDetails>();

                return objDetails.CreateInvDetails(objDetils);
            }
            catch (Exception ex)
            {
                // Abort Transaction
                throw ex;
            }
        }

创建另一个库文件来声明对象并插入到数据库中

 public class Inventory
    {
        CommonExecDAL CommonExecDAL = new CommonExecDAL();
        public string name { get; set; }
        public string Fname { get; set; }
        public string S1 { get; set; }
        public string S2 { get; set; }
        public string S3 { get; set; }
        public int intCompanyId { get; set; }


        public int CreateInvComputer(InvDetails objInvDetails)
        {

            SqlParameter[] arParms = new SqlParameter[6];
            .........

        }
    }

【问题讨论】:

  • NewtonSoft.Json 是您应该使用的库。互联网上有大量关于如何将其用于 Jain 序列化和反序列化的示例。
  • 您可以将 JSON array 反序列化为列表。但是您的 JSON 是单个对象

标签: c# arrays json


【解决方案1】:

如果您不想创建课程:
您可以使用JObject.Parse() 方法进行动态反序列化。

【讨论】:

  • 使用 Newtonsoft.Json.Linq; //需要添加引用// JObject jObject = JObject.Parse(Detils); objDetails.name = (string)jObject.SelectToken("name");
【解决方案2】:

正如@SirRufo 所说,您可以将 JSON 数组反序列化为列表。但您在示例中的 JSON 字符串是一个对象!

无论如何,您可以使用 JSON.Net 将 JSON 字符串反序列化为对象。

首先,你有一个Deserialize 的课程:

public class Data
{
    public string name { get; set; }
    public string Fname { get; set; }
    public string S1 { get; set; }
    public string S2 { get; set; }
    public string S3 { get; set; }
}

然后你可以将 JSON 字符串反序列化为 C# 类:

var obj = JsonConvert.DeserializeObject<Data>(jsonString);

【讨论】:

    【解决方案3】:

    只需添加对System.Web.Extensions 的引用,(.NET 4+ 上的内置 dll):

    JavaScriptSerializer jss = new JavaScriptSerializer();
    var jsonObj =jss.Deserialize<dynamic>(jsonString);
    

    【讨论】:

    • 它工作但返回基于键和值的数组。我试图将值分配给我的对象 objDetails.name = jsonObj[0].value 但它得到了错误
    • @Roshmi 尝试像 jsonObj[“yourKey”] 一样访问它
    猜你喜欢
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2011-08-01
    • 2017-02-04
    • 1970-01-01
    相关资源
    最近更新 更多