使用JSON.net自定义序列化/反序列化
我的应用程序接收以下格式的短信: STA:000000000;L:310;商标号码: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:133333000000000000;O01:0000;8F使用JSON.net自定义序列化/反序列化,.net,json,.net,Json,我的应用程序接收以下格式的短信: STA:000000000;L:310;商标号码: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;P
我想将此字符串反序列化为对象。我已经读过关于JSON工具的文章,但我不知道是否用这种格式进行序列化和反序列化。也就是说,我可以更改默认分隔符(
,
)和类({}
)以及数组符号([]
)?这看起来像一个代码>键-值对的分隔列表,其中键和值由:
分隔。下面的代码就是这样解析的。我不明白这与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();
}
常量字符串测试输入=“STA:000000000;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:13333300000000000;O01:0000”;
IEnumerable语法分析列表(字符串输入)
{
string[]line=input.Split(“;”);
foreach(行中的字符串行)
{
string[]parts=line.Split(“:”);
如果(零件长度!=2)
抛出新的InvalidDataException(行);
返回新的KeyValuePair(部件[0],部件[1]);
}
}
void Main()
{
ParseList(testInput.Dump();
}
它不处理最后一个
;8F
但我假设这只是一个被截断消息的工件。这不是json-为什么要使用json序列化程序?最好简单地告诉我们该格式的规则是什么,这样我们就可以提供指导。但我的指导是:忘记json吧——那不是json。格式看起来就像是分隔的键值对,但很难看到作为对象,您希望它看起来像什么。。。你有解释的例子吗?i、 这些数据代表什么?请发表评论。这些对值是通过sms发送的gprs数据记录器的输出。考虑到字符串的结构不一致(即某些对/值有时被省略),将此类字符串读取到对象(反序列化)的最佳方式是什么?谢谢你的回复,假设我有一个STA,L,TM,D,。。。财产。我知道在上面的字符串中,有些时候一些对值被省略了,知道什么是向类读取这样一个字符串的最佳实践吗?