如何在C#中反序列化JSON字符串?
我有以下字符串:如何在C#中反序列化JSON字符串?,c#,json,public,C#,Json,Public,我有以下字符串: { "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.50000
{
"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; }
}
result=reader.ReadToEnd();
var desc=Utilities.Jsprocessor.Deserialize(结果);
内部类fooString
{
公共字符串时间{get;set;}
公共字符串data1m{get;set;}
}
但是,我仍然需要处理字符串。
是否有方法将其反序列化,以便将其保存在阵列中?这将是一种数据感知方法我从一个名为json1.json的文件中读取json
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();
}
自定义转换器
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();
}
}
公共类StringToListConverter:JsonConverter
{
公共覆盖布尔CanConvert(类型objectType)
{
抛出新的NotImplementedException();
}
公共重写对象ReadJson(JsonReader阅读器,类型objectType,对象existingValue,JsonSerializer序列化程序)
{
if(reader.Value为空)
{
返回null;
}
List retVal=JsonConvert.DeserializeObject(reader.Value.ToString());
返回返回;
}
公共重写void WriteJson(JsonWriter编写器、对象值、JsonSerializer序列化器)
{
抛出新的NotImplementedException();
}
}
型号
public class model
{
public int time { get; set; }
[JsonConverter(typeof(StringToListConverter<List<int>>))]
public List<double[]> data1m { get; set; }
}
公共类模型
{
公共整数时间{get;set;}
[JsonConverter(类型(StringToListConverter))]
公共列表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();
}
公共字符串jsonData=”“;
静态void Main(字符串[]参数)
{
使用(StreamReader r=newstreamreader(“json1.json”))
{
字符串json=r.ReadToEnd();
Console.Write(json);
var item=JsonConvert.DeserializeObject(json);
}
Console.ReadKey();
}
字符串文本={
“时间”:20200526,
“data1m:“[159045162004.73204.81204.73204.81,1.00720100],[15904516800204.66204.66204.58204.58,1.00000000],[1590452280204.65204.83204.65204.83,13.74186800],[1590452820203.75203.75203.75203.75,0.50000000],[15904528800203.47203.47203203.1.60000000],[1590453000203.06203.06203.06203.06,4.00000000]。”
}
字符串deserializedText=JsonConvert.DeserializeObject(文本);
注意:对于JsonConvert,请使用NuGet包:-“Newtonsoft.Json”请注意,在将Json反序列化为
fooString
,然后将fooString.data1m
反序列化为double[]
。方法Utilities.Jsprocessor.Deserialize来自哪个库?我在google上找不到任何东西。