Files
lserp_cs_5.0/插件库/Zhaizj.Framework/Serialization/JsonParser/ArrayJsonParser.cs
T
2026-07-10 15:25:05 +08:00

75 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
namespace Zhaizj.Framework.Serialization {
internal class ArrayJsonParser : JsonParserBase {
private List<object> list = new List<object>();
public override Object getResult() {
return list;
}
public ArrayJsonParser( CharSource charSrc )
: base( charSrc ) {
}
protected override void parse() {
charSrc.moveToText();
if (charSrc.getCurrent() != '[') throw ex( "json array must start with [" );
charSrc.moveToText();
if (charSrc.getCurrent() == ']') return;
// 回到[
charSrc.back();
parseOne();
}
private void parseOne() {
charSrc.moveToText();
if (charSrc.getCurrent() == ',') {
charSrc.back();
list.Add( null );
}
else {
charSrc.back();
// 将值加入列表
Object val = moveAndGetParser().getResult();
list.Add( val );
}
// 剩余字符处理
charSrc.moveToText();
char c = charSrc.getCurrent();
if (c == ']') {
return;
}
if (c != ',') throw ex( "json array must seperated with , " );
charSrc.moveToText();
if (charSrc.getCurrent() == ']') {
return;
}
else {
charSrc.back();
parseOne();
}
}
}
}