2011-02-13 127 views
0

我的應用程序接收到的SMS在以下格式:自定義序列/反序列化使用JSON .NET

STA:000000,000; L:310; TM:090516195102; d:1; T:01; C:25; A00 :0.166; A01:00000; A02:0.578; A03:00 000; A04:00000; A05:00000; A06:00000; A07:00000; A08:00000; A09:00000; A10:00000; A11:00000; A1 2:00000; A13:31.00; A14:30.93; P01:00000000; P02:00000000; P03:00000000; P04:00000000; P05:000 00000; P06:00000000; K01:13333330000000000; O01:0000; 8F

我想將這個字符串反序列化爲一個對象。我已經閱讀過關於JSON工具,但我不知道我是否以這種格式序列化和反序列化。也就是說,我可以更改默認分隔符(,)和類({})和數組符號([])嗎?

+1

這不是json - 你爲什麼要使用json序列化程序?最好簡單地告訴我們該格式的規則是什麼,所以我們可以提供指導。但我的指導:忘記json - 這不是json。 – 2011-02-13 09:07:57

+0

格式看起來就像定界的鍵值對一樣,但很難看到你想要看起來像一個對象...你有一個例子解釋嗎?即該數據代表什麼? – 2011-02-13 09:10:01

回答

1

這看起來像一個;分隔的鍵值對列表,其中鍵和值由:分隔。下面的代碼解析是這樣的。我不明白這與JSON有什麼關係。

const string testInput="STA:000000,000;L:310;TM:090516195102;D:1;T:01;C:25;A00:0.166;A01:00000;A02:0.578;A03:00"+ 
     "000;A04:00000;A05:00000;A06:00000;A07:00000;A08:00000;A09:00000;A10:00000;A11:00000;A1"+ 
     "2:00000;A13:31.00;A14:30.93;P01:00000000;P02:00000000;P03:00000000;P04:00000000;P05:000"+ 
     "00000;P06:00000000;K01:13333330000000000;O01:0000"; 

IEnumerable<KeyValuePair<string,string>> ParseList(string input) 
{ 
    string[] lines=input.Split(';'); 
    foreach(string line in lines) 
    { 
     string[] parts=line.Split(':'); 
     if(parts.Length!=2) 
      throw new InvalidDataException(line); 
     yield return new KeyValuePair<string,string>(parts[0],parts[1]); 
    } 
} 

void Main() 
{ 
    ParseList(testInput).Dump();  
} 

它不處理的最後;8F但我認爲這只是一個截斷的消息的神器。