2014-02-26 32 views
1
O{bTyp | S{WCS-STD}bUsr | S{Paul R Dunaway}bUid | S{1350}sCmd | S{}sId | A{}sNme | S{}sUrl  | S{}sLbl | S{}sCok | S{}mMsg | S{All Other Software}fAct | S{}fTyp | S{}fKey | S{}fVal | S{}bUserType | S{CUST}transType | S{}mTsp | S{2012-01-26 15:03:04}}|O{bTyp | S{WCS-STD}bUsr | S{system}bUid | I{-1}sCmd | S{}sId | A{}sNme | S{}sUrl | S{}sLbl | S{}sCok | S{}mMsg | S{[An agent will be with you shortly.]}fAct | S{}fTyp | S{}fKey | S{}fVal | S{}bUserType | S{SYSTEM}transType | S{}mTsp | S{2012-01-26 15:03:04}} 

这是我们的网络聊天系统(Cisco UCCE/eGain)用来存储成绩单。我期待通过C#/ SQL访问它们,但我发现这种编码有点奇怪。上面是我后清理所有的URL编码比特下面的例子这是什么格式? Cisco WIM Chat Transcript

O%7BbTyp%20%7C%20S%7BWCS-STD%7DbUsr%20%7C%20S%7BPaul%20R%20Dunaway%7DbUid%20%7C%20S%7B1350%7DsCmd%20%7C%20S%7B%7DsId%20%7C%20A%7B%7DsNme%20%7C%20S%7B%7DsUrl%20%7C%20S%7B%7DsL 
+1

我称之为'专有'。也就是思科特定的编码。 – Zoredache

回答

1

这似乎使一些更有意义reindented:

O{ 
    bTyp | S{WCS-STD} 
    bUsr | S{Paul R Dunaway} 
    bUid | S{1350} 
    sCmd | S{} 
    sId | A{} 
    sNme | S{} 
    sUrl  | S{} 
    sLbl | S{} 
    sCok | S{} 
    mMsg | S{All Other Software} 
    fAct | S{} 
    fTyp | S{} 
    fKey | S{} 
    fVal | S{} 
    bUserType | S{CUST} 
    transType | S{} 
    mTsp | S{2012-01-26 15:03:04} 
} 
| 
O{ 
    bTyp | S{WCS-STD} 
    bUsr | S{system} 
    bUid | I{-1} 
    sCmd | S{} 
    sId | A{} 
    sNme | S{} 
    sUrl | S{} 
    sLbl | S{} 
    sCok | S{} 
    mMsg | S{[An agent will be with you shortly.]} 
    fAct | S{} 
    fTyp | S{} 
    fKey | S{} 
    fVal | S{} 
    bUserType | S{SYSTEM} 
    transType | S{} 
    mTsp | S{2012-01-26 15:03:04} 
} 

(请原谅我,如果我只是重申明显)这看起来不像我之前见过的任何形式的序列化;我认为它不在可能性之内,认为它是专有的。大括号内包含的值可以是以下四种数据类型中的一种:由紧接在开头大括号之前的字符表示:S用于字符串,I用于整数,O用于对象(作为命名属性的值的集合)或A,推测是数组。对象属性根据值之前的字符串进行命名,并用管道字符将其分隔开。

一些问题仍然存在:

  • 什么是一个数组值是什么样子?
  • 为什么bUid的数据类型从一个对象变为另一个对象?
  • 为什么空白不一致? (如果不是数值的一部分,我会假定空白被忽略)
  • 为什么用管道字符来分隔两个顶级对象?这是数组符号如何工作?
+0

我一直在思索更多信息。我发现他们用Java编写的软件可以通过网络门户读取成绩单。尽力在.NET中复制它。感谢您的输入! –