c# c语言结构体体序列化正常,反序列化报错end of stream encountered before parsing was completed

一开始在本地测试的时候,取序列化值得时候,直接是unserialize(数组)[&名称&],这样使用,没问题,也不报错。后来传到服务器上以后(tp框架),莫名其妙报错,也没有具体错误原因。挨个方法调试以后,终于找到就是unserialize的原因。
后来用变量接受一下反序列化的数组,然后用变量[&名称&]的方式调用,一点问题没有。不知道这是不是一个unserialize的漏洞。希望能给大家一个提示。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8265次
排名:千里之外
原创:33篇
转载:47篇
(6)(6)(1)(17)(22)(10)(2)(2)(1)(3)(4)(6)类似 google protobuf,用于序列化/反序列化 c 结构体 - 下载频道 - CSDN.NET
&&&&类似 google protobuf,用于序列化/反序列化 c 结构体
&类似 google protobuf,用于序列化/反序列化 c 结构体
类似 google protobuf,用于序列化/反序列化 c 结构体。支持序列化为 xml/json/binary 3 种格式。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 传优质资源可以获取积分,详细见。选择完成有奖的任务,可以获取积分。选择购买VIP会员服务,无需积分下载资源。评价资源返积分:第一次绑定手机,将获50下载积分及100论坛可用分。论坛可用分兑换下载积分。
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
类似 google protobuf,用于序列化/反序列化 c 结构体
所需积分:3
剩余积分:
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000所有回答(1)
楼主这问题解决了麽?我在使用UdpClient通信的时候序列化结构体也出现了问题,请教楼主一下啊...
&&&您需要以后才能回答,未注册用户请先。类似 google protobuf,用于序列化/反序列化 c 结构体 - 下载频道
- CSDN.NET
&&&&类似 google protobuf,用于序列化/反序列化 c 结构体
类似 google protobuf,用于序列化/反序列化 c 结构体
类似 google protobuf,用于序列化/反序列化 c 结构体。支持序列化为 xml/json/binary 3 种格式。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行当前位置: &
& 查看源码
jsonreader.cs
jsonreader.cs:源码内容
#region&License
//&Copyright&(c)&2007&James&Newton-King
//&Permission&is&hereby&granted,&free&of&charge,&to&any&person
//&obtaining&a&copy&of&this&software&and&associated&documentation
//&files&(the&&Software&),&to&deal&in&the&Software&without
//&restriction,&including&without&limitation&the&rights&to&use,
//&copy,&modify,&merge,&publish,&distribute,&sublicense,&and/or&sell
//&copies&of&the&Software,&and&to&permit&persons&to&whom&the
//&Software&is&furnished&to&do&so,&subject&to&the&following
//&conditions:
//&The&above&copyright&notice&and&this&permission&notice&shall&be
//&included&in&all&copies&or&substantial&portions&of&the&Software.
//&THE&SOFTWARE&IS&PROVIDED&&AS&IS&,&WITHOUT&WARRANTY&OF&ANY&KIND,
//&EXPRESS&OR&IMPLIED,&INCLUDING&BUT&NOT&LIMITED&TO&THE&WARRANTIES
//&OF&MERCHANTABILITY,&FITNESS&FOR&A&PARTICULAR&PURPOSE&AND
//&NONINFRINGEMENT.&IN&NO&EVENT&SHALL&THE&AUTHORS&OR&COPYRIGHT
//&HOLDERS&BE&LIABLE&FOR&ANY&CLAIM,&DAMAGES&OR&OTHER&LIABILITY,
//&WHETHER&IN&AN&ACTION&OF&CONTRACT,&TORT&OR&OTHERWISE,&ARISING
//&FROM,&OUT&OF&OR&IN&CONNECTION&WITH&THE&SOFTWARE&OR&THE&USE&OR
//&OTHER&DEALINGS&IN&THE&SOFTWARE.
#endregion
using&System.Collections.G
using&System.T
using&System.IO;
using&System.X
using&System.G
namespace&Newtonsoft.Json
&&///&&summary&
&&///&Represents&a&reader&that&provides&fast,&non-cached,&forward-only&access&to&serialized&Json&data.
&&///&&/summary&
&&public&class&JsonReader&:&IDisposable
&&&&private&enum&State
&&&&&&Start,
&&&&&&Complete,
&&&&&&Property,
&&&&&&ObjectStart,
&&&&&&Object,
&&&&&&ArrayStart,
&&&&&&Array,
&&&&&&Closed,
&&&&&&PostValue,
&&&&&&Constructor,
&&&&&&ConstructorEnd,
&&&&&&Error,
&&&&&&Finished
&&&&private&TextReader&_
&&&&private&char&_currentC
&&&&//&current&Token&data
&&&&private&JsonToken&_
&&&&private&object&_
&&&&private&Type&_valueT
&&&&private&char&_quoteC
&&&&private&StringBuffer&_
&&&&//private&StringBuilder&_testB
&&&&private&State&_currentS
&&&&private&int&_
&&&&private&List&JsonType&&_
&&&&///&&summary&
&&&&///&Gets&the&quotation&mark&character&used&to&enclose&the&value&of&a&string.
&&&&///&&/summary&
&&&&public&char&QuoteChar
&&&&&&get&{&return&_quoteC&}
&&&&///&&summary&
&&&&///&Gets&the&type&of&the&current&Json&token.&
&&&&///&&/summary&
&&&&public&JsonToken&TokenType
&&&&&&get&{&return&_&}
&&&&///&&summary&
&&&&///&Gets&the&text&value&of&the&current&Json&token.
&&&&///&&/summary&
&&&&public&object&Value
&&&&&&get&{&return&_&}
&&&&///&&summary&
&&&&///&Gets&The&Common&Language&Runtime&(CLR)&type&for&the&current&Json&token.
&&&&///&&/summary&
&&&&public&Type&ValueType
&&&&&&get&{&return&_valueT&}
&&&&///&&summary&
&&&&///&Initializes&a&new&instance&of&the&&see&cref=&JsonReader&/&&class&with&the&specified&&see&cref=&TextReader&/&.
&&&&///&&/summary&
&&&&///&&param&name=&reader&&The&&c&TextReader&/c&&containing&the&XML&data&to&read.&/param&
&&&&public&JsonReader(TextReader&reader)
&&&&&&if&(reader&==&null)
&&&&&&&&throw&new&ArgumentNullException(&reader&);
&&&&&&_reader&=&
&&&&&&_buffer&=&new&StringBuffer(4096);
&&&&&&//_testBuffer&=&new&StringBuilder();
&&&&&&_currentState&=&State.S
&&&&&&_stack&=&new&List&JsonType&();
&&&&&&_top&=&0;
&&&&&&Push(JsonType.None);
&&&&private&void&Push(JsonType&value)
&&&&&&_stack.Add(value);
&&&&&&_top++;
&&&&private&JsonType&Pop()
&&&&&&JsonType&value&=&Peek();
&&&&&&_stack.RemoveAt(_stack.Count&-&1);
&&&&&&_top--;
&&&&&&return&
&&&&private&JsonType&Peek()
&&&&&&return&_stack[_top&-&1];
&&&&private&void&ParseString(char&quote)
&&&&&&bool&stringTerminated&=&
&&&&&&while&(!stringTerminated&&&&MoveNext())
&&&&&&&&switch&(_currentChar)
&&&&&&&&&&//case&0:
&&&&&&&&&&//case&0x0A:
&&&&&&&&&&//case&0x0D:
&&&&&&&&&&//&&&&throw&new&JsonReaderException(&Unterminated&string&);
&&&&&&&&&&case&'\':
&&&&&&&&&&&&if&(MoveNext())
&&&&&&&&&&&&{
&&&&&&&&&&&&&&switch&(_currentChar)
&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&case&'b':
&&&&&&&&&&&&&&&&&&_buffer.Append('b');
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&case&'t':
&&&&&&&&&&&&&&&&&&_buffer.Append('t');
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&case&'n':
&&&&&&&&&&&&&&&&&&_buffer.Append('n');
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&case&'f':
&&&&&&&&&&&&&&&&&&_buffer.Append('f');
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&case&'r':
&&&&&&&&&&&&&&&&&&_buffer.Append('r');
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&case&'u':
&&&&&&&&&&&&&&&&&&//_buffer.Append((char)&Integer.parseInt(next(4),&16));
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&case&'x':
&&&&&&&&&&&&&&&&&&//_buffer.Append((char)&Integer.parseInt(next(2),&16));
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&default:
&&&&&&&&&&&&&&&&&&_buffer.Append(_currentChar);
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{
&&&&&&&&&&&&&&throw&new&JsonReaderException(&Unterminated&string.&Expected&delimiter:&&&+&quote);
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&&&case&'&':
&&&&&&&&&&case&''':
&&&&&&&&&&&&if&(_currentChar&==&quote)
&&&&&&&&&&&&&&stringTerminated&=&
&&&&&&&&&&&&else
&&&&&&&&&&&&&&goto&
&&&&&&&&&&&&
&&&&&&&&&&default:
&&&&&&&&&&&&_buffer.Append(_currentChar);
&&&&&&&&&&&&
&&&&&&if&(!stringTerminated)
&&&&&&&&throw&new&JsonReaderException(&Unterminated&string.&Expected&delimiter:&&&+&quote);
&&&&&&ClearCurrentChar();
&&&&&&_currentState&=&State.PostV
&&&&&&_token&=&JsonToken.S
&&&&&&_value&=&_buffer.ToString();
&&&&&&_buffer.Position&=&0;
&&&&&&_valueType&=&typeof(string);
&&&&&&_quoteChar&=&
&&&&private&bool&MoveNext()
&&&&&&int&value&=&_reader.Read();
&&&&&&if&(value&!=&-1)
&&&&&&&&_currentChar&=&(char)
&&&&&&&&//_testBuffer.Append(_currentChar);
&&&&&&&&return&
&&&&&&else
&&&&&&&&return&
&&&&private&bool&HasNext()
&&&&&&return&(_reader.Peek()&!=&-1);
&&&&private&char&PeekNext()
&&&&&&return&(char)_reader.Peek();
&&&&private&void&ClearCurrentChar()
&&&&&&_currentChar&=&'';
&&&&private&bool&MoveTo(char&value)
&&&&&&while&(MoveNext())
&&&&&&&&if&(_currentChar&==&value)
&&&&&&&&&&return&
&&&&&&return&
&&&&///&&summary&
&&&&///&Reads&the&next&Json&token&from&the&stream.
&&&&///&&/summary&
&&&&///&&returns&&/returns&
&&&&public&bool&Read()
&&&&&&while&(true)
&&&&&&&&if&(_currentChar&==&'')
&&&&&&&&&&if&(!MoveNext())
&&&&&&&&&&&&return&
&&&&&&&&switch&(_currentState)
&&&&&&&&&&case&State.Start:
&&&&&&&&&&case&State.Property:
&&&&&&&&&&case&State.Array:
&&&&&&&&&&case&State.ArrayStart:
&&&&&&&&&&&&return&ParseValue();
&&&&&&&&&&case&plete:
&&&&&&&&&&&&
&&&&&&&&&&case&State.Object:
&&&&&&&&&&case&State.ObjectStart:
&&&&&&&&&&&&return&ParseObject();
&&&&&&&&&&case&State.PostValue:
&&&&&&&&&&&&//&returns&true&if&it&hits
&&&&&&&&&&&&//&end&of&object&or&array
&&&&&&&&&&&&if&(ParsePostValue())
&&&&&&&&&&&&&&return&
&&&&&&&&&&&&
&&&&&&&&&&case&State.Closed:
&&&&&&&&&&&&
&&&&&&&&&&case&State.Error:
&&&&&&&&&&&&
&&&&&&&&&&default:
&&&&&&&&&&&&throw&new&JsonReaderException(&Unexpected&state:&&&+&_currentState);
&&&&private&bool&ParsePostValue()
&&&&&&&&switch&(_currentChar)
&&&&&&&&&&case&'}':
&&&&&&&&&&&&SetToken(JsonToken.EndObject);
&&&&&&&&&&&&ClearCurrentChar();
&&&&&&&&&&&&return&
&&&&&&&&&&case&']':
&&&&&&&&&&&&SetToken(JsonToken.EndArray);
&&&&&&&&&&&&ClearCurrentChar();
&&&&&&&&&&&&return&
&&&&&&&&&&case&'/':
&&&&&&&&&&&&ParseComment();
&&&&&&&&&&&&return&
&&&&&&&&&&case&',':
&&&&&&&&&&&&//&finished&paring
&&&&&&&&&&&&SetStateBasedOnCurrent();
&&&&&&&&&&&&ClearCurrentChar();
&&&&&&&&&&&&return&
&&&&&&&&&&default:
&&&&&&&&&&&&if&(char.IsWhiteSpace(_currentChar))
&&&&&&&&&&&&{
&&&&&&&&&&&&&&//&eat&whitespace
&&&&&&&&&&&&&&ClearCurrentChar();
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{
&&&&&&&&&&&&&&throw&new&JsonReaderException(&After&parsing&a&value&an&unexpected&character&was&encoutered:&&&+&_currentChar);
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&}&while&(MoveNext());
&&&&&&return&
&&&&private&bool&ParseObject()
&&&&&&&&switch&(_currentChar)
&&&&&&&&&&case&'}':
&&&&&&&&&&&&SetToken(JsonToken.EndObject);
&&&&&&&&&&&&return&
&&&&&&&&&&case&'/':
&&&&&&&&&&&&ParseComment();
&&&&&&&&&&&&return&
&&&&&&&&&&case&',':
&&&&&&&&&&&&SetToken(JsonToken.Undefined);
&&&&&&&&&&&&return&
&&&&&&&&&&default:
&&&&&&&&&&&&if&(char.IsWhiteSpace(_currentChar))
&&&&&&&&&&&&{
&&&&&&&&&&&&&&//&eat
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{
&&&&&&&&&&&&&&return&ParseProperty();
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&}&while&(MoveNext());
&&&&&&return&
&&&&private&bool&ParseProperty()
&&&&&&if&(ValidIdentifierChar(_currentChar))
&&&&&&&&ParseUnquotedProperty();
&&&&&&else&if&(_currentChar&==&'&'&||&_currentChar&==&''')
&&&&&&&&ParseQuotedProperty(_currentChar);
&&&&&&else
&&&&&&&&throw&new&JsonReaderException(&Invalid&property&identifier&character:&&&+&_currentChar);
&&&&&&//&finished&property.&move&to&colon
&&&&&&if&(_currentChar&!=&':')
&&&&&&&&MoveTo(':');
&&&&&&SetToken(JsonToken.PropertyName,&_buffer.ToString());
&&&&&&_buffer.Position&=&0;
&&&&&&return&
&&&&private&void&ParseQuotedProperty(char&quoteChar)
&&&&&&//&parse&property&name&until&quoted&char&is&hit
&&&&&&while&(MoveNext())
&&&&&&&&if&(_currentChar&==&quoteChar)
&&&&&&&&&&
&&&&&&&&else
&&&&&&&&&&_buffer.Append(_currentChar);
&&&&&&throw&new&JsonReaderException(&Unclosed&quoted&property.&Expected:&&&+&quoteChar);
&&&&private&bool&ValidIdentifierChar(char&value)
&&&&&&return&(char.IsLetterOrDigit(_currentChar)&||&_currentChar&==&'_'&||&_currentChar&==&'$');
&&&&private&void&ParseUnquotedProperty()
&&&&&&//&parse&unquoted&property&name&until&whitespace&or&colon
&&&&&&_buffer.Append(_currentChar);
&&&&&&while&(MoveNext())
&&&&&&&&if&(char.IsWhiteSpace(_currentChar)&||&_currentChar&==&':')
&&&&&&&&&&
&&&&&&&&else&if&(ValidIdentifierChar(_currentChar))
&&&&&&&&&&_buffer.Append(_currentChar);
&&&&&&&&else
&&&&&&&&&&throw&new&JsonReaderException(&Invalid&JavaScript&property&identifier&character:&&&+&_currentChar);
&&&&private&void&SetToken(JsonToken&newToken)
&&&&&&SetToken(newToken,&null);
&&&&private&void&SetToken(JsonToken&newToken,&object&value)
&&&&&&_token&=&newT
&&&&&&switch&(newToken)
&&&&&&&&case&JsonToken.StartObject:
&&&&&&&&&&_currentState&=&State.ObjectS
&&&&&&&&&&Push(JsonType.Object);
&&&&&&&&&&ClearCurrentChar();
&&&&&&&&&&
&&&&&&&&case&JsonToken.StartArray:
&&&&&&&&&&_currentState&=&State.ArrayS
&&&&&&&&&&Push(JsonType.Array);
&&&&&&&&&&ClearCurrentChar();
&&&&&&&&&&
&&&&&&&&case&JsonToken.EndObject:
&&&&&&&&&&ValidateEnd(JsonToken.EndObject);
&&&&&&&&&&ClearCurrentChar();
&&&&&&&&&&_currentState&=&State.PostV
&&&&&&&&&&
&&&&&&&&case&JsonToken.EndArray:
&&&&&&&&&&ValidateEnd(JsonToken.EndArray);
&&&&&&&&&&ClearCurrentChar();
&&&&&&&&&&_currentState&=&State.PostV
&&&&&&&&&&
&&&&&&&&case&JsonToken.PropertyName:
&&&&&&&&&&_currentState&=&State.P
&&&&&&&&&&ClearCurrentChar();
&&&&&&&&&&
&&&&&&&&case&JsonToken.Undefined:
&&&&&&&&case&JsonToken.Integer:
&&&&&&&&case&JsonToken.Float:
&&&&&&&&case&JsonToken.Boolean:
&&&&&&&&case&JsonToken.Null:
&&&&&&&&case&JsonToken.Constructor:
&&&&&&&&case&JsonToken.Date:
&&&&&&&&&&_currentState&=&State.PostV
&&&&&&&&&&
&&&&&&if&(value&!=&null)
&&&&&&&&_value&=&
&&&&&&&&_valueType&=&value.GetType();
&&&&&&else
&&&&&&&&_value&=&
&&&&&&&&_valueType&=&
&&&&private&bool&ParseValue()
&&&&&&&&switch&(_currentChar)
&&&&&&&&&&case&'&':
&&&&&&&&&&case&''':
&&&&&&&&&&&&ParseString(_currentChar);
&&&&&&&&&&&&return&
&&&&&&&&&&case&'t':
&&&&&&&&&&&&ParseTrue();
&&&&&&&&&&&&return&
&&&&&&&&&&case&'f':
&&&&&&&&&&&&ParseFalse();
&&&&&&&&&&&&return&
&&&&&&&&&&case&'n':
&&&&&&&&&&&&if&(HasNext())
&&&&&&&&&&&&{
&&&&&&&&&&&&&&char&next&=&PeekNext();
&&&&&&&&&&&&&&if&(next&==&'u')
&&&&&&&&&&&&&&&&ParseNull();
&&&&&&&&&&&&&&else&if&(next&==&'e')
&&&&&&&&&&&&&&&&ParseConstructor();
&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&throw&new&JsonReaderException(&Unexpected&character&encountered&while&parsing&value:&&&+&_currentChar);
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{
&&&&&&&&&&&&&&throw&new&JsonReaderException(&Unexpected&end&);
&&&&&&&&&&&&}
&&&&&&&&&&&&return&
&&&&&&&&&&case&'/':
&&&&&&&&&&&&ParseComment();
&&&&&&&&&&&&return&
&&&&&&&&&&case&'u':
&&&&&&&&&&&&ParseUndefined();
&&&&&&&&&&&&return&
&&&&&&&&&&case&'{':
&&&&&&&&&&&&SetToken(JsonToken.StartObject);
&&&&&&&&&&&&return&
&&&&&&&&&&case&'[':
&&&&&&&&&&&&SetToken(JsonToken.StartArray);
&&&&&&&&&&&&return&
&&&&&&&&&&case&'}':
&&&&&&&&&&&&SetToken(JsonToken.EndObject);
&&&&&&&&&&&&return&
&&&&&&&&&&case&']':
&&&&&&&&&&&&SetToken(JsonToken.EndArray);
&&&&&&&&&&&&return&
&&&&&&&&&&case&',':
&&&&&&&&&&&&SetToken(JsonToken.Undefined);
&&&&&&&&&&&&//ClearCurrentChar();
&&&&&&&&&&&&return&
&&&&&&&&&&case&')':
&&&&&&&&&&&&if&(_currentState&==&State.Constructor)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&_currentState&=&State.ConstructorE
&&&&&&&&&&&&&&return&
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{
&&&&&&&&&&&&&&throw&new&JsonReaderException(&Unexpected&character&encountered&while&parsing&value:&&&+&_currentChar);
&&&&&&&&&&&&}
&&&&&&&&&&default:
&&&&&&&&&&&&if&(char.IsWhiteSpace(_currentChar))
&&&&&&&&&&&&{
&&&&&&&&&&&&&&//&eat
&&&&&&&&&&&&}
&&&&&&&&&&&&else&if&(char.IsNumber(_currentChar)&||&_currentChar&==&'-'&||&_currentChar&==&'.')
&&&&&&&&&&&&{
&&&&&&&&&&&&&&ParseNumber();
&&&&&&&&&&&&&&return&
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{
&&&&&&&&&&&&&&throw&new&JsonReaderException(&Unexpected&character&encountered&while&parsing&value:&&&+&_currentChar);
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&}&while&(MoveNext());
&&&&&&return&
&&&&private&bool&EatWhitespace(bool&oneOrMore)
&&&&&&bool&whitespace&=&
&&&&&&while&(char.IsWhiteSpace(_currentChar))
&&&&&&&&whitespace&=&
&&&&&&&&MoveNext();
&&&&&&return&(!oneOrMore&||&whitespace);
&&&&private&void&ParseConstructor()
&&&&&&if&(MatchValue(&new&,&true))
&&&&&&&&if&(EatWhitespace(true))
&&&&&&&&&&while&(char.IsLetter(_currentChar))
&&&&&&&&&&{
&&&&&&&&&&&&_buffer.Append(_currentChar);
&&&&&&&&&&&&MoveNext();
&&&&&&&&&&}
&&&&&&&&&&string&constructorName&=&_buffer.ToString();
&&&&&&&&&&_buffer.Position&=&0;
&&&&&&&&&&List&object&&parameters&=&new&List&object&();
&&&&&&&&&&EatWhitespace(false);
&&&&&&&&&&if&(_currentChar&==&'('&&&&MoveNext())
&&&&&&&&&&{
&&&&&&&&&&&&_currentState&=&State.C
&&&&&&&&&&&&while&(ParseValue())
&&&&&&&&&&&&{
&&&&&&&&&&&&&&parameters.Add(_value);
&&&&&&&&&&&&&&_currentState&=&State.C
&&&&&&&&&&&&}
&&&&&&&&&&&&if&(pareOrdinal(constructorName,&&Date&)&==&0)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&long&javaScriptTicks&=&Convert.ToInt64(parameters[0]);
&&&&&&&&&&&&&&DateTime&date&=&JavaScriptConvert.ConvertJavaScriptTicksToDateTime(javaScriptTicks);
&&&&&&&&&&&&&&SetToken(JsonToken.Date,&date);
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{
&&&&&&&&&&&&&&JavaScriptConstructor&constructor&=&new&JavaScriptConstructor(constructorName,&new&JavaScriptParameters(parameters));
&&&&&&&&&&&&&&if&(_currentState&==&State.ConstructorEnd)
&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&SetToken(JsonToken.Constructor,&constructor);
&&&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&//&move&past&')'
&&&&&&&&&&&&MoveNext();
&&&&&&&&&&}
&&&&private&void&ParseNumber()
&&&&&&//&parse&until&seperator&character&or&end
&&&&&&bool&end&=&
&&&&&&&&if&(CurrentIsSeperator())
&&&&&&&&&&end&=&
&&&&&&&&else
&&&&&&&&&&_buffer.Append(_currentChar);
&&&&&&}&while&(!end&&&&MoveNext());
&&&&&&string&number&=&_buffer.ToString();
&&&&&&object&numberV
&&&&&&JsonToken&numberT
&&&&&&if&(number.IndexOf('.')&==&-1)
&&&&&&&&numberValue&=&Convert.ToInt64(_buffer.ToString(),&CultureInfo.InvariantCulture);
&&&&&&&&numberType&=&JsonToken.I
&&&&&&else
&&&&&&&&numberValue&=&Convert.ToDouble(_buffer.ToString(),&CultureInfo.InvariantCulture);
&&&&&&&&numberType&=&JsonToken.F
&&&&&&_buffer.Position&=&0;
&&&&&&SetToken(numberType,&numberValue);
&&&&private&void&ValidateEnd(JsonToken&endToken)
&&&&&&JsonType&currentObject&=&Pop();
&&&&&&if&(GetTypeForCloseToken(endToken)&!=&currentObject)
&&&&&&&&throw&new&JsonReaderException(string.Format(&JsonToken&{0}&is&not&valid&for&closing&JsonType&{1}.&,&endToken,&currentObject));
&&&&private&void&SetStateBasedOnCurrent()
&&&&&&JsonType&currentObject&=&Peek();
&&&&&&switch&(currentObject)
&&&&&&&&case&JsonType.Object:
&&&&&&&&&&_currentState&=&State.O
&&&&&&&&&&
&&&&&&&&case&JsonType.Array:
&&&&&&&&&&_currentState&=&State.A
&&&&&&&&&&
&&&&&&&&case&JsonType.None:
&&&&&&&&&&_currentState&=&State.F
&&&&&&&&&&
&&&&&&&&default:
&&&&&&&&&&throw&new&JsonReaderException(&While&setting&the&reader&state&back&to&current&object&an&unexpected&JsonType&was&encountered:&&&+&currentObject);
&&&&private&JsonType&GetTypeForCloseToken(JsonToken&token)
&&&&&&switch&(token)
&&&&&&&&case&JsonToken.EndObject:
&&&&&&&&&&return&JsonType.O
&&&&&&&&case&JsonToken.EndArray:
&&&&&&&&&&return&JsonType.A
&&&&&&&&default:
&&&&&&&&&&throw&new&JsonReaderException(&Not&a&valid&close&JsonToken:&&&+&token);
&&&&private&void&ParseComment()
&&&&&&//&should&have&already&parsed&/&character&before&reaching&this&method
&&&&&&MoveNext();
&&&&&&if&(_currentChar&==&'*')
&&&&&&&&while&(MoveNext())
&&&&&&&&&&if&(_currentChar&==&'*')
&&&&&&&&&&{
&&&&&&&&&&&&if&(MoveNext())
&&&&&&&&&&&&{
&&&&&&&&&&&&&&if&(_currentChar&==&'/')
&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&_buffer.Append('*');
&&&&&&&&&&&&&&&&_buffer.Append(_currentChar);
&&&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&}
&&&&&&&&&&else
&&&&&&&&&&{
&&&&&&&&&&&&_buffer.Append(_currentChar);
&&&&&&&&&&}
&&&&&&else
&&&&&&&&throw&new&JsonReaderException(&Error&parsing&comment.&Expected:&*&);
&&&&&&ment,&_buffer.ToString());
&&&&&&_buffer.Position&=&0;
&&&&&&ClearCurrentChar();
&&&&private&bool&MatchValue(string&value)
&&&&&&int&i&=&0;
&&&&&&&&if&(_currentChar&!=&value[i])
&&&&&&&&&&
&&&&&&&&i++;
&&&&&&while&(i&&&value.Length&&&&MoveNext());
&&&&&&return&(i&==&value.Length);
&&&&private&bool&MatchValue(string&value,&bool&noTrailingNonSeperatorCharacters)
&&&&&&//&will&match&value&and&then&move&to&the&next&character,&checking&that&it&is&a&seperator&character
&&&&&&bool&match&=&MatchValue(value);
&&&&&&if&(!noTrailingNonSeperatorCharacters)
&&&&&&&&return&
&&&&&&else
&&&&&&&&return&(match&&&&(!MoveNext()&||&CurrentIsSeperator()));
&&&&private&bool&CurrentIsSeperator()
&&&&&&switch&(_currentChar)
&&&&&&&&case&'}':
&&&&&&&&case&']':
&&&&&&&&case&',':
&&&&&&&&&&return&
&&&&&&&&case&'/':
&&&&&&&&&&//&check&next&character&to&see&if&start&of&a&comment
&&&&&&&&&&return&(HasNext()&&&&PeekNext()&==&'*');
&&&&&&&&case&')':
&&&&&&&&&&if&(_currentState&==&State.Constructor)
&&&&&&&&&&&&return&
&&&&&&&&&&
&&&&&&&&default:
&&&&&&&&&&if&(char.IsWhiteSpace(_currentChar))
&&&&&&&&&&&&return&
&&&&&&&&&&
&&&&&&return&
&&&&private&void&ParseTrue()
&&&&&&//&check&characters&equal&'true'
&&&&&&//&and&that&it&is&followed&by&either&a&seperator&character
&&&&&&//&or&the&text&ends
&&&&&&if&(MatchValue(JavaScriptConvert.True,&true))
&&&&&&&&SetToken(JsonToken.Boolean,&true);
&&&&&&else
&&&&&&&&throw&new&JsonReaderException(&Error&parsing&boolean&value.&);
&&&&private&void&ParseNull()
&&&&&&if&(MatchValue(JavaScriptConvert.Null,&true))
&&&&&&&&SetToken(JsonToken.Null);
&&&&&&else
&&&&&&&&throw&new&JsonReaderException(&Error&parsing&null&value.&);
&&&&private&void&ParseUndefined()
&&&&&&if&(MatchValue(JavaScriptConvert.Undefined,&true))
&&&&&&&&SetToken(JsonToken.Undefined);
&&&&&&else
&&&&&&&&throw&new&JsonReaderException(&Error&parsing&undefined&value.&);
&&&&private&void&ParseFalse()
&&&&&&if&(MatchValue(JavaScriptConvert.False,&true))
&&&&&&&&SetToken(JsonToken.Boolean,&false);
&&&&&&else
&&&&&&&&throw&new&JsonReaderException(&Error&parsing&boolean&value.&);
&&&&void&IDisposable.Dispose()
&&&&&&Dispose(true);
&&&&private&void&Dispose(bool&disposing)
&&&&&&if&(_currentState&!=&State.Closed&&&&disposing)
&&&&&&&&Close();
&&&&///&&summary&
&&&&///&Changes&the&&see&cref=&State&/&&to&Closed.&
&&&&///&&/summary&
&&&&public&void&Close()
&&&&&&_currentState&=&State.C
&&&&&&_token&=&JsonToken.N
&&&&&&_value&=&
&&&&&&_valueType&=&
&&&&&&if&(_reader&!=&null)
&&&&&&&&_reader.Close();
&&&&&&if&(_buffer&!=&null)
&&&&&&&&_buffer.Clear();
友情链接:
CopyRight & 2008- All Rights reserved. 苏ICP备
号 京公网安备:95}

我要回帖

更多关于 c语言结构体 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信