SimpleJSON возвращает ноль при обработке звонка из Postmen - PullRequest
0 голосов
/ 18 марта 2019

Я установил в Unity SimpleJSON, пытаясь десериализовать полученный вызов от вызова REST-HTTP, который содержит JSON

simpleJSON

это мой сценарий

я слушаю 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 получил данные, я подтвердил, что необработанные данные успешно получены

однако, процесс выдает ошибку при использовании токена 3000accept-encoding (3000 - номер порта) в строке 529.

ctx.Add(TokenName, ParseElement(Token.ToString(), TokenIsQuoted));

, поскольку это статическая функция, я продублировал ее и создал версию, возвращающую объект, которая вернула все данные, которые я мог придумать для отладки: i, aJSON [i], Token, 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] оказался нулевым.

Кто-нибудь из вас знает, почему это могло произойти? кроме того, в этой части даже не было цифры "," ...

Я не менял сценарий. Я не добавил SimpleJSONUnity.cs

1 Ответ

0 голосов
/ 23 марта 2019

проблема была перед сценарием, когда я получил HTTP-ответ и отправил его в десериализацию, не захватывая сначала тело.

после отладки полного ответа я выпустил это. Simple json имеет переменную ctx, которая инициализируется при достижении {цифры (1-й в json, а не 1-й в HTTP-вызове).

вот почему мне выдавалась нулевая ошибка

...