我已经安装到我的统一SimpleJSON中,以尝试反序列化从JSON接收的REST-HTTP调用中收到的调用
我正在监听localhost 3000并从邮递员发送
GET HTTP/1.1
Host: localhost:3000
Accept: application/json
Content-Type: application/json
cache-control: no-cache
Postman-Token: 3a64322b-a33c-4828-8347-11cdc7da70af
{
"item": "seeds",
"Answers": "5",
"richText": "*some text*"
}------WebKitFormBoundary7MA4YWxkTrZu0gW--
Simplejson收到数据后,我验证了raw data has arrived successfully
但是,当使用令牌“ 3000accept-encoding”(3000是端口号)时,该过程将转储错误。 在529行中。
ctx.Add(TokenName, ParseElement(Token.ToString(), TokenIsQuoted));
由于它是一个静态函数,因此我将其复制并创建了一个对象返回版本,该对象返回了我可以想到的用于调试的所有数据: i,aJSON [i],令牌,Token.Length,TokenName,TokenIsQuoted 并将行更改为
string final = "";
...
case ',':
if (QuoteMode)
{
Token.Append(aJSON[i]);
break;
}
final = "aJSON[i] "+aJSON[i] +", token "+ Token + ", length "+ Token.Length +", token Name '" + TokenName+"', IsQuoted " + TokenIsQuoted+"-";
if (Token.Length > 0 || TokenIsQuoted)
{
try
{
ctx.Add(TokenName, ParseElement(Token.ToString(), TokenIsQuoted));
}
catch(Exception e)
{
final+=" "+e;
return final;
}
}
返回的是:
aJSON[i] ,, token gzip, length 4, token Name '3000accept-encoding', IsQuoted False- System.NullReferenceException: Object reference not set to an instance of an object
at SimpleJSON.JSONNode.ParseTester (System.String aJSON) [0x00316] in C:\++Projects\SparkBeyond\Unity\Unity Projects\JSONDeserialize\Assets\SimpleJSON-master\SimpleJSON.cs:690
这表明即使它是一个开关(第605行)且大小写是aJSON [i]为',',由于某种原因,似乎aJSON [i]还是为null。
你们当中有人知道为什么会发生这种情况吗? 而且,该部分甚至没有','数字...
我没有更改脚本。 我没有添加SimpleJSONUnity.cs
答案 0 :(得分:0)
问题出在脚本之前,当我得到HTTP答案并将其发送到反序列化而不首先抓住主体的时候。
在调试完整个答案后,我发布了该答案。简单的json有一个ctx变量,一旦到达{位(JSON中的第1个,而不是HTTP调用中的第1个),就初始化。
这就是为什么我被抛出一个空错误