繁体   English   中英

如何在 C# 中将 Json 列表字符串转换为列表?

[英]How to Convert Json list String to List in c#?

我需要将 json 列表字符串转换为 C# 列表

我的模型:

public class AddressModel
{
    public string StateCode { get; set; }
    public string CityCode { get; set; }
    public string PinCode { get; set; }
    public string Place { get; set; }
    public string Street { get; set; }
    public string DoorNo { get; set; }
    public string State { get; set; }
    public string City { get; set; }
    public string AddresDetails{ get; set; }
    
}

杰森:

"[\n  {\n    \"input\": {\n      \"statecode\": 1,\n      \"citycode\": 12,\n      \"pincode\": \"123\",\n       \"addresdetails\": \"\"\n    },\n    \"output\": [\n      \n    ]\n  },\n  {\n    \"input\": {\n      \"statecode\": 2,\n      \"citycode\": 45,\n      \"pincode\": \"765\",\n        \"addresdetails\": \"\"\n    },\n    \"output\": [\n      \n    ]\n  }\n]";

我尝试使用 DeserializeObject 但它不起作用

变种模型 = JsonConvert.DeserializeObject(json);

我想把它转换成一个列表。 有人可以帮我吗?

这是一个适合我的示例

//Deserialize the JSON string with the model
List<Root> myList = JsonConvert.DeserializeObject<List<Root>>(strJSON);

foreach(Root rootObj in myList) {
    //access properties of the deserialized object
    Console.WriteLine(rootObj.Input.statecode);
}

更新:对于您的 JSON,您的模型应该是这样的;

public class Input
    {
        public int statecode { get; set; }
        public int citycode { get; set; }
        public string pincode { get; set; }
        public string addresdetails { get; set; }
    }

    public class Root
    {
        public Input input { get; set; }
        public List<object> output { get; set; }
    }

您的 json 不仅仅是您的模型数组。 它们是数组中对象的输入。 您必须做更多的工作才能通过添加更多模型或操作 json 对象来将其反序列化。

var obj = JsonConvert.DeserializeObject<JArray>(json);
var addresses = obj.Select(x => x["input"].ToObject<AddressModel>()).ToList();

你必须修复你的课程

 List<Data>  data = JsonConvert.DeserializeObject<List<Data>>(json);

public partial class Data
{
    [JsonProperty("input")]
    public AddressModel Input { get; set; }

    [JsonProperty("output")]
    public List<Output> Output { get; set; }
}

public partial class AddressModel
{
    [JsonProperty("statecode")]
    public long Statecode { get; set; }

    [JsonProperty("citycode")]
    public long Citycode { get; set; }

    [JsonProperty("pincode")]
    
    public long Pincode { get; set; }

    [JsonProperty("addresdetails")]
    public string Addresdetails { get; set; }
}

public partial class Output
{
}

如果您只需要输入列表

 List<AddressModel> inputs = data.Select(d =>d.Input ).ToList();

 // or just using AddressModel

List<AddressModel> inputs = JArray.Parse(json).Select(d =>d["input"].ToObject<AddressModel>() ).ToList();

如何转换列表<object>至 Json | C#<div id="text_translate"><p> 我有一个由对象组成的列表,每个 object 有 5 个数据。 我需要将该列表转换为 json,但使用序列化它会填满空的 json。</p><p> 有谁知道我可能做错了什么?</p><pre> foreach (DataRow dtRow in dtAlarmas.Rows) { String Name = dtRow["Name"].ToString(); String ID = dtRow["ID"].ToString(); String AlarmText = dtRow["AlarmText"].ToString(); String AlarmTimeNoNula = dtRow["AlarmTimeNoNula"].ToString(); lstAlarmasNoTratadas.Add(new Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel(dtRow["Name"].ToString(), Convert.ToInt32(dtRow["ID"]), dtRow["Class"].ToString(), dtRow["AlarmText"].ToString(), dtRow["AlarmTimeNoNula"].ToString())); } string sParams = JsonConvert.SerializeObject(lstAlarmasNoTratadas);</pre><p> 转换后的 sParams 值 = "[{}]"</p><p> Class Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel</p><pre> using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Ondoan.DatosAux.Alarmas { public class AlarmaNoTratadaModel { private string Name; private int ID; private string Class; private string AlarmText; private string AlarmaTimeNoNula; public AlarmaNoTratadaModel(string Name, int ID, string Class, string AlarmText, string AlarmaTimeNoNula) { // TODO: Complete member initialization this.Name = Name; this.ID = ID; this.Class = Class; this.AlarmText = AlarmText; this.AlarmaTimeNoNula = AlarmaTimeNoNula; } public class AlarmaNoTratadasModel { public AlarmaNoTratadasModel() { } public AlarmaNoTratadasModel(String Name, Nullable&lt;System.Int32&gt; ID, String Class, String AlarmText, String AlarmaTimeNoNula) { this.Name = Name; this.ID = ID; this.Class = Class; this.AlarmText = AlarmText; this.AlarmaTimeNoNula = AlarmaTimeNoNula.ToString(); } public System.String Name { get; set; } public Nullable&lt;System.Int32&gt; ID { get; set; } public System.String Class { get; set; } public System.String AlarmText { get; set; } public System.String AlarmaTimeNoNula { get; set; } } } }</pre></div></object>

[英]How to Convert List<Object> to Json | C#

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在c#中将Json字符串转换为List 将 Json 字符串转换为 C# Object 列表 如何在 C# 中将列表转换为 JSON? 如何在C#中将JSON响应转换为列表? 如何将JSON数组转换为C#列表? 如何将json转换为列表c# 如何转换列表<object>至 Json | C#<div id="text_translate"><p> 我有一个由对象组成的列表,每个 object 有 5 个数据。 我需要将该列表转换为 json,但使用序列化它会填满空的 json。</p><p> 有谁知道我可能做错了什么?</p><pre> foreach (DataRow dtRow in dtAlarmas.Rows) { String Name = dtRow["Name"].ToString(); String ID = dtRow["ID"].ToString(); String AlarmText = dtRow["AlarmText"].ToString(); String AlarmTimeNoNula = dtRow["AlarmTimeNoNula"].ToString(); lstAlarmasNoTratadas.Add(new Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel(dtRow["Name"].ToString(), Convert.ToInt32(dtRow["ID"]), dtRow["Class"].ToString(), dtRow["AlarmText"].ToString(), dtRow["AlarmTimeNoNula"].ToString())); } string sParams = JsonConvert.SerializeObject(lstAlarmasNoTratadas);</pre><p> 转换后的 sParams 值 = "[{}]"</p><p> Class Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel</p><pre> using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Ondoan.DatosAux.Alarmas { public class AlarmaNoTratadaModel { private string Name; private int ID; private string Class; private string AlarmText; private string AlarmaTimeNoNula; public AlarmaNoTratadaModel(string Name, int ID, string Class, string AlarmText, string AlarmaTimeNoNula) { // TODO: Complete member initialization this.Name = Name; this.ID = ID; this.Class = Class; this.AlarmText = AlarmText; this.AlarmaTimeNoNula = AlarmaTimeNoNula; } public class AlarmaNoTratadasModel { public AlarmaNoTratadasModel() { } public AlarmaNoTratadasModel(String Name, Nullable&lt;System.Int32&gt; ID, String Class, String AlarmText, String AlarmaTimeNoNula) { this.Name = Name; this.ID = ID; this.Class = Class; this.AlarmText = AlarmText; this.AlarmaTimeNoNula = AlarmaTimeNoNula.ToString(); } public System.String Name { get; set; } public Nullable&lt;System.Int32&gt; ID { get; set; } public System.String Class { get; set; } public System.String AlarmText { get; set; } public System.String AlarmaTimeNoNula { get; set; } } } }</pre></div></object> 如何在C#中将Json数组转换为列表 如何在 c# 中将列表转换为 json 如何将对象转换为列表 <string> 在c#?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM