আমার সার্ভার সাইড কোডটি এমন একটি মান দেয় যা সাফল্যের উপর একটি জসন বস্তু এবং ব্যর্থতায় স্ট্রিং 'মিথ্যা'। এখন আমি কীভাবে যাচাই করতে পারি যে প্রত্যাবর্তিত মানটি একটি জাসন বস্তু কিনা?
আমার সার্ভার সাইড কোডটি এমন একটি মান দেয় যা সাফল্যের উপর একটি জসন বস্তু এবং ব্যর্থতায় স্ট্রিং 'মিথ্যা'। এখন আমি কীভাবে যাচাই করতে পারি যে প্রত্যাবর্তিত মানটি একটি জাসন বস্তু কিনা?
উত্তর:
jQuery.parseJSON () "অবজেক্ট" টাইপের একটি অবজেক্ট ফিরিয়ে আনতে হবে, যদি স্ট্রিংটি JSON ছিল, সুতরাং আপনাকে কেবল প্রকারটি পরীক্ষা করতে হবে typeof
var response=jQuery.parseJSON('response from server');
if(typeof response =='object')
{
// It is JSON
}
else
{
if(response ===false)
{
// the response was a string "false", parseJSON will convert it to boolean false
}
else
{
// the response was something else
}
}
"SyntaxError: JSON.parse: unexpected character"
ত্রুটি! , আমি মনে করি সেরা সমাধানটি চেষ্টা / ক্যাপচার ব্যবহার যা Serguei Fedorov
এখানে বলেছিল : স্ট্যাকওভারফ্লো
নির্বাচিত সমাধানটি আসলে আমার পক্ষে কাজ করে না কারণ আমি একটি পাই
"Unexpected Token <"
ক্রোমে ত্রুটি। কারণ পার্সটি জুড়ে আসার সাথে সাথে অজানা চরিত্রটি ত্রুটি ছুঁড়ে ফেলা হয়েছে। তবে এজ্যাকের মাধ্যমে কেবল স্ট্রিং মানগুলি ফিরিয়ে দিলে এর আশেপাশের একটি উপায় রয়েছে (যা আপনি যদি পিএইচপি বা এএসপিএক্স ব্যবহার করে অ্যাজাক্স অনুরোধগুলি প্রক্রিয়া করতে ব্যবহার করেন এবং শর্তের উপর নির্ভর করে জেএসএনকে ফেরত নাও দিতে পারেন) এটি যথেষ্ট কার্যকর হতে পারে)
সমাধানটি বেশ সহজ, আপনি বৈধ JSON রিটার্ন ছিল কিনা তা পরীক্ষা করতে নিম্নলিখিতটি করতে পারেন
var IS_JSON = true;
try
{
var json = $.parseJSON(msg);
}
catch(err)
{
IS_JSON = false;
}
যেমনটি আমি আগেই বলেছি, এটি সমাধান যদি আপনি হয় আপনার এজেএক্স অনুরোধ থেকে স্ট্রিং টাইপ স্টাফগুলি ফিরিয়ে দিচ্ছেন বা আপনি যদি মিশ্র প্রকারটি ফিরিয়ে দিচ্ছেন।
false
বৈধ JSON) ON প্রশ্নটি কেবলমাত্র একটি বিন্দু সম্পর্কে: পার্সড জেএসওএন-স্ট্রিং যদি কোনও বুলিয়ান false
বা কোনও বস্তু হয় তবে কীভাবে পার্থক্য করবেন
/**
* @param Object
* @returns boolean
*/
function isJSON (something) {
if (typeof something != 'string')
something = JSON.stringify(something);
try {
JSON.parse(something);
return true;
} catch (e) {
return false;
}
}
তুমি এটা ব্যবহার করতে পারো:
var myJson = [{"user":"chofoteddy"}, {"user":"bart"}];
isJSON(myJson); // true
কোনও বস্তুটি JSON বা অ্যারে প্রকারের যাচাই করার সর্বোত্তম উপায়টি নিম্নরূপ:
var a = [],
o = {};
toString.call(o) === '[object Object]'; // true
toString.call(a) === '[object Array]'; // true
a.constructor.name === 'Array'; // true
o.constructor.name === 'Object'; // true
তবে, কঠোরভাবে বলতে গেলে, একটি অ্যারে জেএসএন সিনট্যাক্সের অংশ। অতএব, নিম্নলিখিত দুটি উদাহরণ একটি জেএসএন প্রতিক্রিয়ার অংশ:
console.log(response); // {"message": "success"}
console.log(response); // {"user": "bart", "id":3}
এবং:
console.log(response); // [{"user":"chofoteddy"}, {"user":"bart"}]
console.log(response); // ["chofoteddy", "bart"]
আপনি যদি এজেএক্সের মাধ্যমে তথ্য আনতে JQuery ব্যবহার করেন। আমি আপনাকে "ডাটা টাইপ" বৈশিষ্ট্যটি "জসন" মানটিতে রাখার পরামর্শ দিচ্ছি, আপনি যদি কোনও জেএসওএন পান বা না পান, জিকুয়ারি এটি আপনার জন্য বৈধতা দেয় এবং তাদের কার্যকারিতা "সাফল্য" এবং "ত্রুটি" এর মাধ্যমে জানিয়ে দেয়। উদাহরণ:
$.ajax({
url: 'http://www.something.com',
data: $('#formId').serialize(),
method: 'POST',
dataType: 'json',
// "sucess" will be executed only if the response status is 200 and get a JSON
success: function (json) {},
// "error" will run but receive state 200, but if you miss the JSON syntax
error: function (xhr) {}
});
আপনার যদি jQuery থাকে তবে isPlainObject ব্যবহার করুন ।
if ($.isPlainObject(my_var)) {}
true
।
var checkJSON = function(m) {
if (typeof m == 'object') {
try{ m = JSON.stringify(m); }
catch(err) { return false; } }
if (typeof m == 'string') {
try{ m = JSON.parse(m); }
catch (err) { return false; } }
if (typeof m != 'object') { return false; }
return true;
};
checkJSON(JSON.parse('{}')); //true
checkJSON(JSON.parse('{"a":0}')); //true
checkJSON('{}'); //true
checkJSON('{"a":0}'); //true
checkJSON('x'); //false
checkJSON(''); //false
checkJSON(); //false
যেহেতু এটি কেবল মিথ্যা এবং জসন অবজেক্ট, আপনি কেন এটি মিথ্যা কিনা তা যাচাই করেন না, অন্যথায় এটি অবশ্যই জসন হতে হবে।
if(ret == false || ret == "false") {
// json
}
আমি জানি এই থ্রেডটির উত্তর ইতিমধ্যে দেওয়া হয়েছে, তবে এখানে আসার ফলে আমার সমস্যার সমাধান হয়নি, আমি এই ফাংশনটি অন্য কোথাও পেয়েছি। সম্ভবত এখানে আসা যে কেউ এটি তাদের কিছু কাজে লাগবে;
function getClass(obj) {
if (typeof obj === "undefined")
return "undefined";
if (obj === null)
return "null";
return Object.prototype.toString.call(obj)
.match(/^\[object\s(.*)\]$/)[1];
}
var data = 'json string ?';
var jdata = null;
try
{
jdata = $.parseJSON(data);
}catch(e)
{}
if(jdata)
{
//use jdata
}else
{
//use data
}
আপনি যদি বৈধ JSON (প্রত্যাবর্তিত মূল্যের অনুপস্থিতির বিপরীতে) এর জন্য স্পষ্টভাবে পরীক্ষা করতে চান false
তবে আপনি এখানে বর্ণিত হিসাবে পার্সিং পদ্ধতির ব্যবহার করতে পারেন ।
আমি গ্রহণযোগ্য উত্তর পছন্দ করি না। প্রথম এবং সর্বাগ্রে এর জন্য jQuery প্রয়োজন, যা সর্বদা উপলব্ধ বা প্রয়োজন হয় না। দ্বিতীয়ত, এটি আমার পক্ষে ওভারকিলের একটি সামগ্রীর স্ট্রিংফিকেশন করে। এখানে একটি সাধারণ ফাংশন যা উদারতার জন্য লোডাশ লাইব্রেরির কয়েকটি অংশ ছাড়া আর কিছুই ব্যবহার করে কোনও মান JSON- এর মতো কিনা তা পুরোপুরি সনাক্ত করে ।
import * as isNull from 'lodash/isNull'
import * as isPlainObject from 'lodash/isPlainObject'
import * as isNumber from 'lodash/isNumber'
import * as isBoolean from 'lodash/isBoolean'
import * as isString from 'lodash/isString'
import * as isArray from 'lodash/isArray'
function isJSON(val) {
if (isNull(val)
|| isBoolean(val)
|| isString(val))
return true;
if (isNumber(val))
return !isNaN(val) && isFinite(val)
if (isArray(val))
return Array.prototype.every.call(val, isJSON)
if (isPlainObject(val)) {
for (const key of Object.keys(val)) {
if (!isJSON(val[key]))
return false
}
return true
}
return false
}
এমনকি এটি প্যাকেজ হিসাবে এনপিএম-এ রাখার জন্য আমি সময়ও নিয়েছি: https://npmjs.com/package/is-json-object । এটি ব্রাউজারে পেতে ওয়েবপ্যাকের মতো কোনও কিছুর সাথে একসাথে ব্যবহার করুন ।
আশা করি এটি কাউকে সাহায্য করবে!
আমি JSON অবজেক্টটি বৈধ করার জন্য এটি ব্যবহার করছি
function isJsonObject(obj) {
try {
JSON.parse(JSON.stringify(obj));
} catch (e) {
return false;
}
return true;
}
আমি JSON স্ট্রিং যাচাই করতে এটি ব্যবহার করছি
function isJsonString(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
আপনার সবসময় জসনকে ফিরে আসা উচিত , তবে এর স্থিতি পরিবর্তন করুন বা উদাহরণস্বরূপ রেসপন্সকোড সম্পত্তি:
if(callbackResults.ResponseCode!="200"){
/* Some error, you can add a message too */
} else {
/* All fine, proceed with code */
};