处理邮递员的电话时,SimpleJSON返回null

时间:2019-03-18 08:54:34

标签: json unity3d postman simplejson http-accept-encoding

我已经安装到我的统一SimpleJSON中,以尝试反序列化从JSON接收的REST-HTTP调用中收到的调用

simpleJSON

that's my script

我正在监听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

1 个答案:

答案 0 :(得分:0)

问题出在脚本之前,当我得到HTTP答案并将其发送到反序列化而不首先抓住主体的时候。

在调试完整个答案后,我发布了该答案。简单的json有一个ctx变量,一旦到达{位(JSON中的第1个,而不是HTTP调用中的第1个),就初始化。

这就是为什么我被抛出一个空错误