我有以下字符串:
{
"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(); } }
模型
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();
}
您可以使用JObject
/ JArray
手动解析它,data1m
应该首先反序列化为字符串,然后反序列化为List
或double
数组的string