Unexpected error json parse error type mismatch for join on calc info

Ошибка JSON.parse: Unexpected Token При работе с JSON порой происходит нечто непонятное - хотя строка JSON вроде бы и правильная, метод JSON.parse, выдает

Ошибка JSON.parse: Unexpected Token

Ошибка JSON.parse: Unexpected Token

При работе с JSON порой происходит нечто непонятное — хотя строка JSON вроде бы и правильная, метод JSON.parse, выдает ошибку “unexpected token”. Это связано с тем, что JSON.parse не может разобрать некоторые специальные символы, такие как n, t, r и f. Поэтому и бросается исключение.

Поэтому, чтобы данное исключение не бросалось, необходимо экранировать эти специальные символы, прежде чем передавать строку JSON в функцию JSON.parse.

Вот функция, которая берет строку JSON и экранирует специальные символы:

function escapeSpecialChars(jsonString) return jsonString.replace(/n/g, «\n»)
.replace(/r/g, «\r»)
.replace(/t/g, «\t»)
.replace(/f/g, «\f»);
>

Таким образом вы можете решить ошибку «unexpected token» при работе с JSON.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 0 ):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

JSON Parse error: Unrecognized token'<‘ — react-native

«JSON Parse error: Unrecognized token'<‘» Error is showing while hitting the api. Code is attached below Note* : Response is in the JSON format.

Please help. Thanks,

user avatar

15 Answers 15

This Means you are getting Html response from the server probably a 404 or 500 error. Instead of response.json() use response.text() you will get the html in text.

user avatar

user avatar

You can try by adding the headers to your fetch api, as it posts your record to your url.

user avatar

I am pretty sure all these answers are correct. From what I have seen, if you have properly set the request header with:

The Accept header will tell the server what data type we are sending. Content-Type tells the client of what the response data type will be.

You most likely had to change the format of the body because the server may not be setup to handle application/json data types. In this case if you have access to your server you can add it to a config file or in .htaccess. If you still get the error, then there is an error in the server’s json response.

If you haven’t used POSTMAN for API testing, go and grab it because it has helped me lots with debugging API’s.

JSON Parse error: Unrecognized token (no JSON shown) #10377

Not sure. I get zero information in the stack trace or logs that points to my own code. This appears to be a flaw in JSON parsing error reporting.

Expected Results

Similar to #8726, I have a problem when JSON tries to be parsed somewhere deep in RN, seems to even be in native-land. Unlike that bug, which was resolved by fixing Fetch, I can’t even tell if Fetch or anything else is the issue here— we need the JSON to be printed so we can see what’s wrong.

I searched the entire react-native codebase for both «JSON Parse error» and «Unrecognized token» to try and fix it myself, nothing found. So it must be in a dependency or something.

Hoping someone knows where these errors are coming from, and can print the offending JSON so I can actually fix the root cause, which is impossible to identify since the offending JSON is not shown.

Сообщение

SyntaxError: JSON.parse: unterminated string literal
SyntaxError: JSON.parse: bad control character in string literal
SyntaxError: JSON.parse: bad character in string literal
SyntaxError: JSON.parse: bad Unicode escape
SyntaxError: JSON.parse: bad escape character
SyntaxError: JSON.parse: unterminated string
SyntaxError: JSON.parse: no number after minus sign
SyntaxError: JSON.parse: unexpected non-digit
SyntaxError: JSON.parse: missing digits after decimal point
SyntaxError: JSON.parse: unterminated fractional number
SyntaxError: JSON.parse: missing digits after exponent indicator
SyntaxError: JSON.parse: missing digits after exponent sign
SyntaxError: JSON.parse: exponent part is missing a number
SyntaxError: JSON.parse: unexpected end of data
SyntaxError: JSON.parse: unexpected keyword
SyntaxError: JSON.parse: unexpected character
SyntaxError: JSON.parse: end of data while reading object contents
SyntaxError: JSON.parse: expected property name or '}'
SyntaxError: JSON.parse: end of data when ',' or ']' was expected
SyntaxError: JSON.parse: expected ',' or ']' after array element
SyntaxError: JSON.parse: end of data when property name was expected
SyntaxError: JSON.parse: expected double-quoted property name
SyntaxError: JSON.parse: end of data after property name when ':' was expected
SyntaxError: JSON.parse: expected ':' after property name in object
SyntaxError: JSON.parse: end of data after property value in object
SyntaxError: JSON.parse: expected ',' or '}' after property value in object
SyntaxError: JSON.parse: expected ',' or '}' after property-value pair in object literal
SyntaxError: JSON.parse: property names must be double-quoted strings
SyntaxError: JSON.parse: expected property name or '}'
SyntaxError: JSON.parse: unexpected character
SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data

Тип ошибки

Что пошло не так?

JSON.parse() обрабатывает (парсит) строку в формате JSON. Это строка должна соответствовать формату, иначе будет выведена ошибка, что был нарушен синтаксис.

Examples

JSON.parse() не допускает запятые

Метод JSON.parse() не разрешает использование, так называемых, trailling запятых.

Обе строки выдадут ошибку типа SyntaxError:

JSON.parse('[1, 2, 3, 4,]');
JSON.parse('{"foo": 1,}');
// SyntaxError JSON.parse: unexpected character
// at line 1 column 14 of the JSON data

Необходимо убрать последние запятые в строках и тогда ошибки не будет:

JSON.parse('[1, 2, 3, 4]');
JSON.parse('{"foo": 1}');

Названия свойств должны быть в двойных кавычках

Вы не можете использовать одинарные кавычки в именах свойств. Например, ‘foo’.

JSON.parse("{'foo': 1}");
// SyntaxError: JSON.parse: expected property name or '}'
// at line 1 column 2 of the JSON data

Вместо этого необходимо написать «foo»:

JSON.parse('{"foo": 1}');

Незначащие нули или плавающая точка без последующей цифры

Вы не можете использовать незначащие нули, например, 01. Плавающая точка должна всегда сопровождаться хотя бы одной цифрой после неё.

JSON.parse('{"foo": 01}');
// SyntaxError: JSON.parse: expected ',' or '}' after property value
// in object at line 1 column 2 of the JSON data

JSON.parse('{"foo": 1.}');
// SyntaxError: JSON.parse: unterminated fractional number
// at line 1 column 2 of the JSON data

Вместо этого напишите просто 1 без нуля и используйте хотя бы одну цифру после точки:

JSON.parse('{"foo": 1}');
JSON.parse('{"foo": 1.0}');

Смотрите также

15.02.2018, 11:49. Показов 3841. Ответов 6


Здравствуйте уважаемые форумчане. Столкнулся с проблемой, которую решить пока не могу.
На сайте большинство получение данных происходит через ajax.
Так вот, самое интересное, что у большинства людей работает все нормально, но есть некоторые у которых json.parse() выдает ошибку. Причем этот человек может с одного компьютера сидеть и все работает нормально, а с другого у него ошибку выдает.
И так. Пример…
Получаю список оценок за комментарии:

Javascript
1
2
3
4
5
6
7
8
9
function QuoteNotif(type) {
ajax({
   method: 'POST',
   action: 'QuoteNotif',
   data: {
    type:type
    }
});
}

Далее php начинает обработку и формирование json

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function QuoteNotif($ajax, $errors) {
       $sql = DbMysql::getInstance();
       $func = new Options(); 
       
        if($_REQUEST['type'] == '1'){
        $quote_user_sql = $sql->run("select *,date_format(date,'%d %b %Y %H:%i:%s') as date from ".MY_PREFIX."_QuoteNotification where user_id = ? order by id DESC",array($_SESSION['ID']));
        }else{
        $quote_user_sql = $sql->run("select *,date_format(date,'%d %b %Y %H:%i:%s') as date from ".MY_PREFIX."_Notification where toUserId = ? order by id DESC",array($_SESSION['ID']));
        } 
        
      if($quote_user_sql->rowCount() > 0){
        while($Rows = $quote_user_sql->fetch()){
        $title = $func->GetOne("title","".MY_PREFIX."_news","id",$Rows['news_id']);
        if($_REQUEST['type'] == '1'){ $Rows['text'] = '0';
        $link = '/news/'.$Rows['news_id'].'/'.$Rows['id'].'/'.$Rows['id_com'].'/quote/#msg'.$Rows['id_com'];
        }else{
        if($Rows['type']){$txt="msg";}else{$txt="quote";}$Rows['username'] = $Rows['fromUsername'];
        $msgCom = $func->GetOne("quote_id","".MY_PREFIX."_comments","id",$Rows['idCom']);
        $link = '/news/'.$Rows['news_id'].'/'.$Rows['id'].'/'.$msgCom.'/notif/#'.$txt.$Rows['idCom'];
        }
        $res[] = array("id" =>$Rows['id'], "username" => $Rows['username'], "link" => $link, "title" =>$title, "text" =>$Rows['text'], "date" => $Rows['date']);
        }
 
        }else{
        $res = '0';
        }
        $ajax->response['data'] = array("NOTIF" => $res, "TYPE" => $_REQUEST['type']);
       if (!$errors->exist()) $ajax->response['action'] = 'QuoteNotifReturn'; // JS Функция будет вызвана на стороне клиента в случае успешного ответа от сервера
 
     }

И теперь пытаемся принять объект

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function ajax(params) { // Описываем функцию отправки запроса
  params.data.action = params.action;
  delete params.action;
  params.url = '/systemDir/classes/ajax.php'; // Путь до файла с нашими функциями
  params.error = function(xhr, err) {
  var responseTitle= $(xhr.responseText).filter('title').get(0);
   $('#newNews').fadeIn(500);
   $('#newNews').html($(responseTitle).text() + "n" + formatErrorMessage(xhr, err) );
   setTimeout(function(){$('#newNews').fadeOut(500);}, 3000);
  }
  var request = $.ajax(params);
  request.then(function(response) {
    try {
            var json = JSON.parse(response);
            if (json.errors) {
           // Обработчик ошибок
           errorFunction(json.errors);
           }
           if (json.action) window[json.action](json.data); // Запускаем коллбек с полученными данными в качестве параметра
        } catch (e) {
            // is not a valid JSON string
    $('#newNews').fadeIn(500);
    $('#newNews').html("Обработка JSON - не удалось распарсить.<br /> Пожалуйста, сообщите об ошибке администратору!");
    setTimeout(function(){$('#newNews').fadeOut(500);}, 5000);
        }
 
    });
 
}

Так вот… В большинстве случаев все и у всех работает нормально, но вот есть люди, у которых вылетает «Обработка JSON — не удалось распарсить»

Я пробовал к одному такому подключаться удаленно и смотрел что происходит в браузере.
А ничего необычного! Вот пример того что получаю я, у меня все работает (копировал из браузера из дебага на вкладке responce):

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{,}
action
:
"QuoteNotifReturn"
data
:
{NOTIF: [{id: "139821", username: "Dan", link: "/news/77278/139821/903190/notif/#quote903196",}],}
NOTIF
:
[{id: "139821", username: "Dan", link: "/news/77278/139821/903190/notif/#quote903196",}]
0
:
{id: "139821", username: "Dan", link: "/news/77278/139821/903190/notif/#quote903196",}
date
:
"15 Feb 2018 10:42:20"
id
:
"139821"
link
:
"/news/77278/139821/903190/notif/#quote903196"
text
:
"Dan оценил ваш ответ (<span style="color:green;">+ 1</span> балл)."
title
:
"Тестовая новость"
username
:
"Dan"
TYPE
:
"2"
errors
:
""

И вот что у того человека:

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
{,}
action
:
"QuoteNotifReturn"
data
:
{NOTIF: [{id: "139768", username: "Kon", link: "/news/77278/139768/0/notif/#msg902945",},],}
NOTIF
:
[{id: "139768", username: "Kon", link: "/news/77278/139768/0/notif/#msg902945",},]
0
:
{id: "139768", username: "Kon", link: "/news/77278/139768/0/notif/#msg902945",}
date
:
"15 Feb 2018 05:07:01"
id
:
"139768"
link
:
"/news/77278/139768/0/notif/#msg902945"
text
:
"Kon оценил ваш комментарий (<span style="color:green;">+ 1</span> балл)."
title
:
"Тестовая новость"
username
:
"Kon"
1
:
{id: "139754", username: "Витян", link: "/news/77278/139754/902857/notif/#quote902909",}
date
:
"14 Feb 2018 23:23:57"
id
:
"139754"
link
:
"/news/77278/139754/902857/notif/#quote902909"
text
:
"Витян оценил ваш ответ (<span style="color:green;">+ 1</span> балл)."
title
:
"Тестовая новость"
username
:
"Витян"
TYPE
:
"2"
errors
:
""

У него выдает ошибку json.

Но дама, на компьютере он говорит что все работает как надо. В браузере ctrl+f5 не помогает. Думал может файлы старые из кэша работают и мешают выполнению, но не помогает…
Всю голову сломал, помогите советом, что может быть?

Добавлено через 6 минут
Ах да… Нужно показать как json формируется

PHP
1
2
3
4
5
6
7
Class Ajax {
  public $response = ['data' => '', 'errors' => '', 'action' => '']; // Структура ответа. В data будет храниться ответ, в errors - ошибки, в action - функция, которая будет вызвана в JS после ответа от сервера
 
  function send() {
    echo json_encode($this->response, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE); // Ответ от сервера будет сериализован в формат JSON
  }
}

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Ошибка JSON.parse: Unexpected Token

JSON.parse() выдает ошибку «неожиданный токен» для правильного JSON

При работе с JSON порой происходит нечто непонятное — хотя строка JSON
вроде бы и правильная, метод JSON.parse, выдает ошибку “unexpected
token
”. Это связано с тем, что JSON.parse не может разобрать некоторые
специальные символы, такие как n, t, r и f. Поэтому и бросается
исключение.

Поэтому, чтобы данное исключение не бросалось, необходимо экранировать эти
специальные символы, прежде чем передавать строку JSON в функцию
JSON.parse.

Вот функция, которая берет строку JSON и экранирует специальные символы:   
   


  function escapeSpecialChars(jsonString) {
    return jsonString.replace(/n/g, "\n")
     .replace(/r/g, "\r")
     .replace(/t/g, "\t")
     .replace(/f/g, "\f");
  }

Таким образом вы можете решить ошибку «unexpected token» при работе с JSON.

  • Создано 19.06.2018 08:53:04


  • Михаил Русаков

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Понравилась статья? Поделить с друзьями:
  • Unfortunately the installation failed error 0x0005 behringer
  • Unexpected error from external database driver 1
  • Unexpected error during tickets mask data validation перевод
  • Unfortunately an unexpected error occurred and bundler cannot continue
  • Unfortunately an error has occurred перевод