SimpleJSON возвращает null при обработке вызова от Postmen

Я установил в свое единство 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


person likuku    schedule 18.03.2019    source источник
comment
У меня мало амбиций разобрать весь ваш код и, возможно, найти ошибку ... что я уже могу сказать: SimpleJSON не предназначен для разбора символа за символом входной строки. Он скорее ожидает действительную строку JSON в качестве входных данных и может возвращать определенные элементы, такие как var N = JSON.Parse(the_JSON_string); var versionString = N["item"].Value;, вам следует сосредоточиться на преобразовании полученной строки в действительную строку JSON, чем с ней не должно быть проблем.   -  person derHugo    schedule 18.03.2019
comment
Привет ты прав. на самом деле, проблема была перед сценарием, когда я получил HTTP-ответ и отправил его на десериализацию без предварительного захвата тела. после отладки всего ответа я выпустил это. Простой json имеет переменную ctx, которая инициализируется после достижения {цифры (1-й в json, а не 1-й в HTTP-вызове). вот почему мне выдавали нулевую ошибку, спасибо   -  person likuku    schedule 23.03.2019


Ответы (1)


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

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

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

person likuku    schedule 23.03.2019