Pages - Menu

2020年9月18日 星期五

[c#]json.NET 二階反序列化

前言

從車商那邊的來源接了一個純文字檔,說是json格式,

結果……只是包的很像json的東西,裡面根本不是阿。只能拆開後,再處理那json了。


正文

原始的資料長這樣

{
   "Car":"W_02",
   "ODO":584.650696,
   "Speed":0,
   "Volt":372.900000,
   "Driver":3,
   "GEO":{
      "lat":120.383720,
      "lng":24.060163
   }
}

可以看到有兩段,所以先宣告class

private class txtAlarm
{
    //車輛編號
    public string Car { get; set; }
    //里程數
    public decimal ODO { get; set; }
    //車速
    public decimal Speed { get; set; }
    //總電壓
    public decimal Volt { get; set; }
    //駕駛模式
    public int Driver { get; set; }
    public GEO GEO { get; set; }
}

public class GEO
{
    public double lat { get; set; }
    public double lng { get; set; }
}

再來就…….直接解了,前面有提到,這個格式比較亂,所以是先將文字檔拆出符合json的字串,再處理。

char[] charSeparators = new char[] { ',' };

var values = line.Split(charSeparators, 2);                   
string strJson = values[1];

var jsonCarAlarm = JsonConvert.DeserializeObject<txtAlarm>(strJson);

 

ref.

[C#] Json反序列化(Deserialize)為物件(Object)

C# Json數組序列化和反序列總結

Newtonsoft.Json 反序列化JSON數組

沒有留言:

張貼留言