অপ্রচলিত সিনট্যাক্সার অপ্রত্যাশিত টোকেন ইউ জেএসএন


293

আমি যখন আমার পৃষ্ঠাটি ক্রোমে চালিত করি তখন আমি এই ত্রুটিটি "অবিরত সিনট্যাক্সার অপ্রত্যাশিত টোকেন ইউ" পেয়েছি get এবং ফায়ারফক্সে আমি "JSON.parse: অপ্রত্যাশিত চরিত্র" পাই। আমি একটি পিএইচপি ফাইল থেকে জসন তথ্য ফিরিয়ে দিচ্ছি এবং ফিরে আসা জসন স্ট্রিংটি বৈধ। আমি এটি http://jsonlint.com/ দিয়ে পরীক্ষা করেছি । যে কোন সহযোগীতা গ্রহনযোগ্য, ধন্যবাদ.

এখানে ফিরে আসা JSON স্ট্রিং

[
    ["1","Pan Africa Market","\"1521 1st Ave, Seattle, WA\"","47.608941","-122.340145","restaurant"],
    ["2","The Melting Pot","14 Mercer St, Seattle, WA","47.624562","-122.356442","restaurant"],
    ["3","Ipanema Grill","1225 1st Ave, Seattle, WA","47.606366","-122.337656","restaurant"],
    ["4","Sake House","230 1st Ave, Seattle, WA","47.612825","-122.34567","bar"],
    ["5","Crab Pot","1301 Alaskan Way, Seattle, WA","47.605961","-122.34036","restaurant"],
    ["6","Mexican Kitchen","2234 2nd Ave, Seattle,WA","47.613975","-122.345467","bar"],
    ["7","Wingdome","1416 E Olive Way, Seattle, WA","47.617215","-122.326584","bar"],
    ["8","Piroshky Piroshky","1908 Pike pl, Seattle, WA","47.610127","-122.342838","restaurant"]
]

আপনি JSON পোস্ট করতে পারেন? যখন আমি এই ত্রুটিটি পাই তখন এটি সাধারণত মেনস করে যে একটি অবসানহীন স্ট্রিং রয়েছে - এটি ইঙ্গিত করছে যে এটি JSON এর 'U' অক্ষরে রয়েছে।
কাইল বার্টন

\"আউটপুটটিতে কিছু অদ্ভুত সমস্যা হতে পারে ।
ফেলিক্স ক্লিং

যে JSON জরিমানা পার্স। আপনার কোডটি আসলে কী দম বন্ধ করছে তা বোঝার চেষ্টা করা উচিত।
nneonneo

উত্তর:


646

প্রদত্ত মানটি JSON.parseআসলে যখন ত্রুটিটি সাধারণত দেখা যায় undefined। সুতরাং, আমি কোডটি যা পার্স করার চেষ্টা করছে তা পরীক্ষা করব - সম্ভবত আপনি এখানে প্রদর্শিত প্রকৃত স্ট্রিংটিকে পার্স করছেন না।


27
এটি "undefined"আক্ষরিক পরিবর্তে একটি স্ট্রিং হিসাবেও হতে পারে undefined। আমি এটি খুঁজে 30 মিনিট সময় ব্যয় করেছি।
ug_

13
@ ns47731 আসলে এটি একই। প্রকৃত অপরিজ্ঞাত হওয়ার কারণ u, এটিকে undefinedস্ট্রিংয়ে জোর করা হয় (কারণ একটি স্ট্রিং যা জেএসএন.পার্স আশা করে)।
শান কিনসে

10
উঘ, একটি অ্যাসিঙ্ক্রোনাস অনুরোধ প্রেরণ করছিল এবং তত্ক্ষণাত অনির্ধারিত ফেরতের পার্স করার চেষ্টা করছিল। আমার সাথে বিরক্ত, ধন্যবাদ।
ক্রিস ট্রুডো

7
এই ত্রুটিটি
জসন

1
আমার ত্রুটিটি ছিল Unexpected token N in JSON at position...এবং সমস্যাটি একটি doubleমূল্য ছিল :NaN
জায়েদার

14

বৈধতা দেওয়ার সময় আমি এই বার্তাটি পাচ্ছিলাম (এমভিসি প্রকল্পে)। আমার জন্য, বৈধতা ম্যাসেজের জন্য উপাদান যুক্ত করার বিষয়টি সমস্যার সমাধান করেছে।

সুনির্দিষ্টভাবে বলতে গেলে, jquery.uthorate.unobtrusive.js এ 43 নম্বর লাইনের কারণে সমস্যাটি দেখা দিয়েছে:

  replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false;

এটি আমাকে সঠিক পথে পেয়েছে; আমার ক্ষেত্রে আমি $("form :input").valid();বৈধতা ট্রিগার করার জন্য করছিলাম । তবে স্পষ্টতই এটি কোনও বৈধতা মেসেজফোর্ড ছাড়াই কোনও লুকানো মাঠে ত্রুটি পেয়েছে। এতে পরিবর্তন করে স্থির করা হয়েছে$("form :input:visible").valid();
Trax72

7

JSON.parse এর প্যারামিটারটি কিছু ফেরত দিতে পারে না (অর্থাত্ JSON.parse এর জন্য প্রদত্ত মানটি undefined)!

আমি যখন একটি xyz.sol ফাইল থেকে সংকলিত দৃity়তার কোডটি পার্স করছিলাম তখন আমার কাছে এটি ঘটেছিল।

import web3 from './web3';
import xyz from './build/xyz.json';

const i = new web3.eth.Contract(
  JSON.parse(xyz.interface),
  '0x99Fd6eFd4257645a34093E657f69150FEFf7CdF5'
);

export default i;

যা হিসাবে ভুল বানান ছিল

JSON.parse(xyz.intereface)

যা কিছুই ফিরিয়ে দিচ্ছিল না!


5

এই ত্রুটির ঘটনার সর্বাধিক সাধারণ ঘটনাটি হ'ল টেম্পলেটটি যা নিয়ন্ত্রণ তৈরি করে তারপরে উপায় পরিবর্তন করে idএবং / অথবা name'ওভাররাইডিং' এর মাধ্যমে ডিফল্ট টেমপ্লেট জাতীয় কিছু দিয়ে তৈরি করা হয়

@Html.TextBoxFor(m => m, new {Name = ViewData["Name"], id = ViewData["UniqueId"]} )

এবং তারপরে পরিবর্তন ValidationMessageForকরতে ভুলে যাচ্ছি

@Html.ValidationMessageFor(m => m, null, new { data_valmsg_for = ViewData["Name"] })    

আশা করি এটি আপনার কিছুটা সময় সাশ্রয় করবে।


3

আমি লুপের জন্য একটি JSONArray এ সন্ধানের শর্তটি চালানোর সময় আমি এই ত্রুটিটি অনুভব করেছি। আমি যে সমস্যার মুখোমুখি হয়েছি তা হ'ল লুপ ফিরতে নালার অন্যতম মানগুলির ফলাফল। তাই, যখন আমি কোনও সম্পত্তি অ্যাক্সেস করার চেষ্টা করেছি তখন এটি ব্যর্থ হয়েছিল।

সুতরাং আপনি যদি JSONArrays এর মধ্যে এমন কিছু করছেন যেখানে আপনি ডেটা উত্স এবং এর সত্যতা সম্পর্কে নিশ্চিত নন আমি এই ক্ষেত্রে নাল এবং অপরিজ্ঞাত ব্যতিক্রমগুলি মোকাবেলা করার পক্ষে এটি একটি ভাল অভ্যাস বলে মনে করি।

আমি JSONArray এ সন্ধানের প্রত্যাশিত মানটি বাতিল করার জন্য পরীক্ষা করে সঠিকভাবে ব্যতিক্রমগুলি পরিচালনা করেছি fixed

ভেবেছি এটি সাহায্য করতে পারে।


1

আমার ক্ষেত্রে XHRResponse ফিরে আসার আগে এটি AJAX ভেরিয়েবলটিতে JSON.parse () কল করার চেষ্টা করেছিল। উদাহরণ:

var response = $.get(URL that returns a valid JSON string);
var data = JSON.parse(response.responseText);

আমি replaced .get এর জন্য jQuery সাইট থেকে একটি উদাহরণ দিয়ে এটিকে প্রতিস্থাপন করেছি :

<script type="text/javascript"> 
    var jqxhr = $.get( "https://jira.atlassian.com/rest/api/2/project", function() {
          alert( "success" );
        })
          .done(function() {
//insert code to assign the projects from Jira to a div.
                jqxhr = jqxhr.responseJSON;
                console.log(jqxhr);
                var div = document.getElementById("products");
                for (i = 0; i < jqxhr.length; i++) {
                    console.log(jqxhr[i].name);
                    div.innerHTML += "<b>Product: " + jqxhr[i].name + "</b><BR/>Key: " + jqxhr[i].key + "<BR/>";
                }
                console.log(div);
            alert( "second success" );
          })
          .fail(function() {
            alert( "error" );
          })
          .always(function() {
            alert( "finished" );
          });

        // Perform other work here ...

        // Set another completion function for the request above
        jqxhr.always(function() {
          alert( "second finished" );
        });
</script>

1

শুধু আপনি বুঝতে পারেন না

উদাহরণস্বরূপ এটি বলতে দেয় যে আমার কাছে একটি JSON STRING আছে .. কোনও JSON অবজেক্ট বা অর্ডার নয়।

সুতরাং যদি জাভাস্ক্রিপ্টে আপনি স্ট্রিংটিকে পার্স করেন

var body={
  "id": 1,
  "deleted_at": null,
  "open_order": {
    "id": 16,
    "status": "open"}

var jsonBody = JSON.parse(body.open_order); //HERE THE ERROR NOW APPEARS BECAUSE THE STRING IS NOT A JSON OBJECT YET!!!! 
//TODO SO
var jsonBody=JSON.parse(body)//PASS THE BODY FIRST THEN LATER USE THE jsonBody to get the open_order

var OpenOrder=jsonBody.open_order;

উপরে দুর্দান্ত উত্তর


1

এই ফাইলটি যদি ফাইল আপলোডের সাথে কাজ করার সময় এই ত্রুটির মুখোমুখি হয় তাদের পক্ষে ..

আমরা টোকেন ভিত্তিক এনক্রিপশন - ডিক্রিপশন জন্য মিডলওয়্যার ব্যবহার করছিলাম এবং আমরা একই ত্রুটির মুখোমুখি হয়েছি।

রুট ফাইলে আমাদের কোডটি নিম্নলিখিত ছিল:

  router.route("/uploadVideoMessage")
  .post(
    middleware.checkToken,
    upload.single("video_file"),
    videoMessageController.uploadVideoMessage
  );

এখানে আমরা আপলোড ফাংশনের আগে মিডলওয়্যারকে কল করছিলাম এবং এটি ত্রুটির সৃষ্টি করছিল। সুতরাং যখন আমরা এটিকে এটিতে পরিবর্তন করেছি, এটি কাজ করেছিল।

router.route("/uploadVideoMessage")
  .post(
    upload.single("video_file"),
    middleware.checkToken,
    videoMessageController.uploadVideoMessage
  );

0

এটি কোনও কঠিন কাজ নয়। এই সমস্যাটি আমার সাইটেও ঘটে আপনার শীর্ষস্থানীয় আপনার জেএস ফাইলগুলি স্থানান্তর করতে হবে। কারণ আপনি যে স্থানে জেএসএন পার্সিং ব্যবহার করছেন, এই মুহূর্তে আপনার জেএস ফাইলগুলি লোড হয় না। উদাহরণ #

<script type="text/javaScript">
...........SOME CODE.............
</script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>

পরিবর্তন

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script type="text/javaScript">
...........SOME CODE.............
</script>

0

ভাল, যারা আপনার কোডটিতে আসলেই ত্রুটিটি খুঁজে পাচ্ছেন না তাদের জন্য, "স্থানীয় স্টোরেজ বা নালীরূপে যেমন বলা হয় না" তেমনি কেবল আপনার কোডটি মন্তব্য করুন এবং অন্য একটি লিখুন যা স্থানীয় স্টোরেজে আইটেমটি সরিয়ে ফেলে। তারপরে, আপনি বর্তমান কোডটি মন্তব্য করতে বা ডিলেট করতে পারেন এবং পূর্ববর্তীটি কেবল পুনরায় সংশোধন করে পুনরায় সেট করতে পারেন (যদি আপনি না করেন তবে আপনি আবার এটি লিখতে পারেন :))

LocalStorage.setItem('Previous' , "removeprevious");  


LocalStorage.removeItem('Previous');   
 Console.log(LocalStorage.getItem('Previous'));

কনসোলটি নালাগুলি প্রদর্শন করবে এবং এটি .. যদি টি কোড কাজ না করে তবে আপনার কোডটি পুনরায় সেট করুন, বাবু! আপনার ত্রুটি হয়েছে।

আমার ইংরেজীর জন্য দুঃখিত!


-3

আমি এই ত্রুটিটি পাচ্ছিলাম, যখন আমি জেসন স্ট্রিং এবং পার্সড জেসসনের জন্য একই পরিবর্তনশীলটি ব্যবহার করছিলাম:

var json = '{"1":{"url":"somesite1","poster":"1.png","title":"site title"},"2":{"url":"somesite2","poster":"2.jpg","title":"site 2 title"}}'

function usingjson(){
    var json = JSON.parse(json);
}

আমি এতে ফাংশন পরিবর্তন করেছি:

function usingjson(){
    var j = JSON.parse(json);
}

এখন এই ত্রুটিটি চলে গেল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.