JSON到列表<;类>&;列表<;类>;转换为JSON

本文关键字:列表 gt JSON lt 转换 amp | 更新日期: 2023-09-27 17:57:43

大家好,我该怎么做?我搜索了SO,这是最有希望的,但也不起作用。

错误消息:

反序列化的类型应为正常类型。NET类型(即不是像integer这样的基元类型,而不是像数组或列表)或字典类型(即字典)。

那么,我如何从json中分离各个对象呢?

List<class> a = JsonConvert.DeserializeObject<List<class>>(JSON_String)

JSON字符串:

{
"SPALTEN": [{
    "NUMMER": 1,
    "NAME": "BREITE",
    "TYP": "Double",
    "LAENGE": 0,
    "EINHEIT": "m",
    "EDITIERBAR": true,
    "OPTIONAL": true,
    "LAYER": null,
    "LAYER_SPALTE": null,
    "D_SPAL_NAME": null,
    "D_SPAL_MIN": 0,
    "D_SPAL_MAX": null,
    "D_SPAL_VAL": null
}, {
    "NUMMER": 2,
    "NAME": "KOMMENTAR",
    "TYP": "String",
    "LAENGE": 255,
    "EINHEIT": null,
    "EDITIERBAR": true,
    "OPTIONAL": true,
    "LAYER": null,
    "LAYER_SPALTE": null,
    "D_SPAL_NAME": null,
    "D_SPAL_MIN": null,
    "D_SPAL_MAX": null,
    "D_SPAL_VAL": null
}]
}

这是我的课:

    public class CONFIG_CLASS
{
    private int _NUMMER;
    public int NUMMER
    {
        get { return _NUMMER; }
        set { _NUMMER = value; }
    }
    private string _NAME;
    public string NAME
    {
        get { return _NAME; }
        set { _NAME = value; }
    }
    private string _TYP;
    public string TYP
    {
        get { return _TYP; }
        set { _TYP = value; }
    }
    private double _LAENGE;
    public double LAENGE
    {
        get { return _LAENGE; }
        set { _LAENGE = value; }
    }
    private string _EINHEIT;
    public string EINHEIT
    {
        get { return _EINHEIT; }
        set { _EINHEIT = value; }
    }
    private bool _EDITIERBAR;
    public bool EDITIERBAR
    {
        get { return _EDITIERBAR; }
        set { _EDITIERBAR = value; }
    }
    private bool _OPTIONAL;
    public bool OPTIONAL
    {
        get { return _OPTIONAL; }
        set { _OPTIONAL = value; }
    }
    private string _LAYER;
    public string LAYER
    {
        get { return _LAYER; }
        set { _LAYER = value; }
    }
    private int _LAYER_SPALTE;
    public int LAYER_SPALTE
    {
        get { return _LAYER_SPALTE; }
        set { _LAYER_SPALTE = value; }
    }
    private string _D_SPAL_NAME;
    public string D_SPAL_NAME
    {
        get { return _D_SPAL_NAME; }
        set { _D_SPAL_NAME = value; }
    }
    private int _D_SPAL_MIN;
    public int D_SPAL_MIN
    {
        get { return _D_SPAL_MIN; }
        set { _D_SPAL_MIN = value; }
    }
    private int _D_SPAL_MAX;
    public int D_SPAL_MAX
    {
        get { return _D_SPAL_MAX; }
        set { _D_SPAL_MAX = value; }
    }
    private string _D_SPAL_VAL;
    public string D_SPAL_VAL
    {
        get { return _D_SPAL_VAL; }
        set { _D_SPAL_VAL = value; }
    }

}

(我稍后还想再次对其进行编码)非常感谢。

JSON到列表<;类>&;列表<;类>;转换为JSON

您应该指定要取消序列化的东西的类型,我认为object不起作用。

List<MyClass> a = JsonConvert.DeserializeObject<List<MyClass>>("[{some json}]")

对不起,我还不能发表评论首先,您的数据和转换类之间存在某种类型不匹配:LAYER_SPALTE、D_SPAL_MIN和D_SPAL_MAX在您的数据中为空。把你的数组放入另一个类

这个代码必须为你工作:

public class MyClass
{
    public SPALTEN[] SPALTEN { get; set; }
}
public class SPALTEN
{
    public int NUMMER { get; set; }
    public string NAME { get; set; }
    public string TYP { get; set; }
    public int LAENGE { get; set; }
    public string EINHEIT { get; set; }
    public bool EDITIERBAR { get; set; }
    public bool OPTIONAL { get; set; }
    public string LAYER { get; set; }
    public int? LAYER_SPALTE { get; set; }
    public string D_SPAL_NAME { get; set; }
    public int? D_SPAL_MIN { get; set; }
    public int? D_SPAL_MAX { get; set; }
    public string D_SPAL_VAL { get; set; }
}

然后

  MyClass a = JsonConvert.DeserializeObject<MyClass>(JSON_String)

要在Internet上转换它,可以使用以下JSON到C#的URL。我用了这么久了。

http://json2csharp.com/