2011-02-13 67 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但我认为这只是一个截断的消息的神器。