private void AnalyseDictionary(IBNode parent)
{
// 字典一定是d开始的
if (GetCurrentCharMove() != 'd')
return;
// 循环分析键值对
do
{
KeyValueNode keyValueNode = _bNodeFactory.GetBNode('k') as KeyValueNode;
// 键值对,键一定是string
keyValueNode.SetKey(AnalyseString());
// 值
switch (GetCurrentChar())
{
case 'i': // 数字
keyValueNode.SetValue(AnalyseInteger());
keyValueNode.ValueType = 'i';
break;
case 'd': // 字典
AnalyseDictionary(keyValueNode);
keyValueNode.ValueType = 'd';
break;
case 'l': // 列表
AnalyseList(keyValueNode);
keyValueNode.ValueType = 'l';
break;
default:
keyValueNode.SetValue(AnalyseString());
keyValueNode.ValueType = 's';
break;
}
parent.Child.Add(keyValueNode);
} while (GetCurrentChar() != 'e');
GetCurrentCharMove();
}