这是什么样的格式?思科WIM聊天记录

时间:2014-02-26 03:34:32

标签: c# sql encoding cisco

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编码位后的例子

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 个答案:

答案 0 :(得分: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}
}

(请原谅我,如果我只是重述那些显而易见的事。)这看起来不像我以前见过的任何形式的序列化;我认为它不属于认为它是专有的可能性。大括号中包含的值可以是四种数据类型中的一种,由前括号前面的字符表示:S表示字符串,I表示整数,O表示对象(a值的集合作为命名属性)或A,大概是数组。对象属性基于值前面的字符串命名,并使用管道符分隔。

仍然存在一些问题:

  • 数组值是什么样的?
  • 为什么bUid的数据类型会从一个对象更改为下一个对象?
  • 为什么空白如此不一致? (我假设当不是值的一部分时,忽略空格。)
  • 为什么管道字符用于分隔两个顶级对象?这是数组符号的工作原理吗?