/// <summary> /// 将对象转换为Json字符串 /// </summary> /// <param name="obj"> </param> /// <param name="settings"> 序列化Json字符串时使用的设置参数 </param> public static string ToJsonString(this object obj, JsonBuilderSettings settings) { using (var buffer = new QuickStringWriter(4096)) { var args = new JsonWriterArgs(WriterContainer, buffer, settings); if (obj == null || obj is DBNull) { WriterContainer.GetNullWriter().Write(null, args); return(buffer.ToString()); } var writer = WriterContainer.GetWriter(obj.GetType()); writer.Write(obj, args); return(buffer.ToString()); } }
/// <summary> 读取从当前位置到终止字符之间的数据 /// </summary> /// <param name="stop">终止字符</param> /// <param name="mode">读取模式</param> public string ReadToStop(Func <char, bool> stopCharMatch, ReadMode mode = ReadMode.SkipAll | ReadMode.RemoveStop | ReadMode.AllowToEnd) { ReadNext(mode | ReadMode.ReserveStop); int startIndex = Position; int stopIndex; var parse = 0 != (mode & ReadMode.ParseAll); do { if (parse && Current == '\\') { var str = new QuickStringWriter(); str.Append(_rawCharArray, startIndex, Position - startIndex); foreach (var s in ReadParseString(stopCharMatch, mode)) { str.Append(s); } return(str.ToString()); } if (stopCharMatch(Current)) { if (CheckAnd(mode, ReadMode.RemoveStop)) { stopIndex = Position; } else { stopIndex = Position + 1; } if (CheckAnd(mode, ReadMode.ReserveStop) == false) { ReadNext(); } if (CheckAnd(mode, ReadMode.RemoveStart)) { startIndex++; } return(new string(_rawCharArray, startIndex, stopIndex - startIndex)); } } while (ReadNext()); if ((mode & ReadMode.AllowToEnd) == 0) { throw new NotSupportedException("已达字符串结尾"); } else { return(new string(_rawCharArray, startIndex, Length - startIndex)); } }
/// <summary> 将对象转换为Json字符串 /// </summary> public string ToJsonString(object obj) { if (obj == null || obj is DBNull) { return("null"); } using (Buffer = new QuickStringWriter(4096)) { if (CheckLoopRef) { _loopObject = new ArrayList(32); } AppendObject(obj); var json = Buffer.ToString(); _loopObject = null; return(json); } }