繁体   English   中英

如何反序列化 C# 中的 JSON 字符串?

[英]How can I deserialize JSON string in C#?

我有以下字符串:

{
  "time": 20200526, 
  "data1m": "[[1590451620,204.73,204.81,204.73,204.81,1.00720100],[1590451680,204.66,204.66,204.58,204.58,1.00000000],[1590452280,204.65,204.83,204.65,204.83,13.74186800],[1590452820,203.75,203.75,203.75,203.75,0.50000000],[1590452880,203.47,203.47,203,203,1.60000000],[1590453000,203.06,203.06,203.06,203.06,4.00000000]]"
}

如何在 C# 中对其进行反序列化?

我使用这段代码:

result = reader.ReadToEnd();
var desc = Utilities.Jsprocessor.Deserialize<fooString>(result);

Internal class fooString
{
     public string time { get; set; }
     public string data1m { get; set; }
}

但是,我仍然需要处理字符串。 有没有办法对其进行反序列化,以便将其保存在数组中?

这将是一种数据感知方式。 我从名为 json1.json 的文件中读取了 json

自定义转换器

public class StringToListConverter<T> : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        throw new NotImplementedException();
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.Value is null)
        {
            return null;
        }
        List<double[]> retVal = JsonConvert.DeserializeObject<List<double[]>>(reader.Value.ToString());
        return retVal;
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }
}

Model

public class model
{
    public int time { get; set; }

    [JsonConverter(typeof(StringToListConverter<List<int>>))]
    public List<double[]> data1m { get; set; }
}

样品执行

public string jsonData = "";
static void Main(string[] args)
{
    using (StreamReader r = new StreamReader("json1.json"))
    {
        string json = r.ReadToEnd();
        Console.Write(json);
        var item = JsonConvert.DeserializeObject<model>(json);
    }

    Console.ReadKey();
}
string text = {
  "time": 20200526, 
  "data1m": "[[1590451620,204.73,204.81,204.73,204.81,1.00720100],[1590451680,204.66,204.66,204.58,204.58,1.00000000],[1590452280,204.65,204.83,204.65,204.83,13.74186800],[1590452820,203.75,203.75,203.75,203.75,0.50000000],[1590452880,203.47,203.47,203,203,1.60000000],[1590453000,203.06,203.06,203.06,203.06,4.00000000]]"
}

string deserializedText = JsonConvert.DeserializeObject<string>(text);

注意:对于 JsonConvert,使用 NuGet Package:- "Newtonsoft.Json"

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM