/// <summary> 跳过一个值 /// </summary> /// <param name="reader"></param> private static void SkipValue(UnsafeJsonReader reader) { switch (reader.Current) { case '[': reader.MoveNext(); if (reader.SkipChar(']')) { return; } do { SkipValue(reader); } while (reader.SkipChar(',')); if (reader.Current != ']') { ThrowException("缺少闭合的 ]"); } reader.MoveNext(); break; case '{': reader.MoveNext(); if (reader.SkipChar('}')) { return; } do { SkipKey(reader); SkipValue(reader); } while (reader.SkipChar(',')); if (reader.Current != '}') { ThrowException("缺少闭合的 }"); } reader.MoveNext(); break; case '"': case '\'': reader.SkipString(); break; default: reader.ReadConsts(); break; } }
/// <summary> 跳过一个键 /// </summary> /// <param name="reader"></param> private static void SkipKey(UnsafeJsonReader reader) { if (reader.IsEnd()) { ThrowException("字符串意外结束!"); } if (reader.Current == '"' || reader.Current == '\'') { reader.SkipString(); } else { reader.SkipWord(); } if (reader.SkipChar(':') == false) //跳过:号 { ThrowMissingCharException(':'); //失败,终止方法 } }
/// <summary> 跳过一个键 /// </summary> /// <param name="reader"></param> private static void SkipKey(UnsafeJsonReader reader) { if (reader.IsEnd()) { ThrowException("字符串意外结束!"); } if (reader.Current == '"' || reader.Current == '\'') { reader.SkipString(); } else { reader.SkipWord(); } if (reader.SkipChar(':') == false)//跳过:号 { ThrowMissingCharException(':'); //失败,终止方法 } }