मुझे JSON को Node.js का उपयोग कैसे करना चाहिए? क्या कुछ मॉड्यूल है जो JSON को सुरक्षित रूप से मान्य और पार्स करेगा?
मुझे JSON को Node.js का उपयोग कैसे करना चाहिए? क्या कुछ मॉड्यूल है जो JSON को सुरक्षित रूप से मान्य और पार्स करेगा?
जवाबों:
आप बस उपयोग कर सकते हैं JSON.parse
।
JSON
ऑब्जेक्ट की परिभाषा ECMAScript 5 विनिर्देश का हिस्सा है । नोड.जेएस गूगल क्रोम के वी 8 इंजन पर बनाया गया है , जो ईसीएमए मानक का पालन करता है। इसलिए, नोड .js में एक वैश्विक ऑब्जेक्ट [डॉक्स] भी है ।JSON
नोट - JSON.parse
वर्तमान थ्रेड को टाई कर सकता है क्योंकि यह एक तुल्यकालिक विधि है। तो अगर आप बड़ी JSON वस्तुओं को पार्स करने की योजना बना रहे हैं, तो स्ट्रीमिंग स्ट्रीमिंग पार्सर का उपयोग करें।
आप .json फ़ाइलों की आवश्यकता कर सकते हैं ।
var parsedJSON = require('./file-name');
उदाहरण के लिए, यदि आपके पास config.json
उसी निर्देशिका में एक फ़ाइल है, जिसका स्रोत कोड फ़ाइल आप उपयोग करेंगे:
var config = require('./config.json');
या (फ़ाइल एक्सटेंशन को छोड़ा जा सकता है):
var config = require('./config');
ध्यान दें कि require
है तुल्यकालिक और केवल फ़ाइल पढ़ता है एक बार , निम्नलिखित कॉल कैश से परिणाम वापसी
यह भी नोट करें कि आपको केवल अपने पूर्ण नियंत्रण में स्थानीय फ़ाइलों के लिए इसका उपयोग करना चाहिए, क्योंकि यह फ़ाइल के भीतर किसी भी कोड को संभावित रूप से निष्पादित करता है।
require
तुल्यकालिक भी है । यदि आप fs.readFile
इसके बजाय इस्कॉन फ्रेंडली उपयोग करना चाहते हैंJSON.parse
.json
विस्तार का उपयोग करने के लिए मत भूलना ! यदि आपकी फ़ाइल में .json
एक्सटेंशन नहीं है , तो आवश्यकता नहीं है कि इसे एक json फ़ाइल माना जाएगा।
आप उपयोग कर सकते हैंJSON.parse()
।
आपको JSON
किसी भी ECMAScript 5 संगत जावास्क्रिप्ट कार्यान्वयन पर ऑब्जेक्ट का उपयोग करने में सक्षम होना चाहिए । और V8 , जिस पर Node.js बनाया गया है, उनमें से एक है।
नोट: यदि आप संवेदनशील जानकारी (जैसे पासवर्ड) संग्रहीत करने के लिए JSON फ़ाइल का उपयोग कर रहे हैं, तो यह गलत तरीका है। देखें कि हरोकू यह कैसे करता है: https://devcenter.heroku.com/articles/config-vars#setting-up-config-vars-for-a-deployed-application । पता करें कि आपका प्लेटफ़ॉर्म यह कैसे करता है, और
process.env
कोड के भीतर से कॉन्फिग वर्जन प्राप्त करने के लिए उपयोग करें।
var str = '{ "name": "John Doe", "age": 42 }';
var obj = JSON.parse(str);
आपको fs
मॉड्यूल के साथ कुछ फ़ाइल संचालन करना होगा ।
var fs = require('fs');
fs.readFile('/path/to/file.json', 'utf8', function (err, data) {
if (err) throw err; // we'll not consider error handling for now
var obj = JSON.parse(data);
});
var fs = require('fs');
var json = JSON.parse(fs.readFileSync('/path/to/file.json', 'utf8'));
require
? फिर से विचार करना!आप कभी-कभी उपयोग कर सकते हैंrequire
:
var obj = require('path/to/file.json');
लेकिन, मैं कई कारणों से इसकी अनुशंसा नहीं करता:
require
समकालिक है। यदि आपके पास एक बहुत बड़ी JSON फाइल है, तो यह आपके ईवेंट लूप को चोक कर देगी। आप वास्तव में उपयोग करने की आवश्यकता JSON.parse
के साथ fs.readFile
।require
केवल एक बार फाइल पढ़ेगा । require
एक ही फ़ाइल के लिए बाद में कॉल एक कैश्ड प्रतिलिपि लौटाएगा। यदि आप .json
लगातार अपडेट की जाने वाली फ़ाइल को पढ़ना चाहते हैं तो अच्छा विचार नहीं है । आप एक हैक का उपयोग कर सकते हैं । लेकिन इस बिंदु पर, इसे आसानी से उपयोग करना आसान है fs
।.json
एक्सटेंशन नहीं है , require
तो फ़ाइल की सामग्री को JSON नहीं माना जाएगा।गंभीरता से! का उपयोग करेंJSON.parse
।
load-json-file
मापांकयदि आप बड़ी संख्या में .json
फ़ाइलें पढ़ रहे हैं , (और यदि आप बहुत आलसी हैं), तो हर बार बॉयलरप्लेट कोड लिखना कष्टप्रद हो जाता है। आप load-json-file
मॉड्यूल का उपयोग करके कुछ वर्ण सहेज सकते हैं ।
const loadJsonFile = require('load-json-file');
loadJsonFile('/path/to/file.json').then(json => {
// `json` contains the parsed object
});
let obj = loadJsonFile.sync('/path/to/file.json');
यदि JSON सामग्री को नेटवर्क पर स्ट्रीम किया जाता है, तो आपको स्ट्रीमिंग JSON पार्सर का उपयोग करने की आवश्यकता है। अन्यथा यह आपके प्रोसेसर को टाई करेगा और JSON सामग्री के पूरी तरह से स्ट्रीम होने तक आपके इवेंट लूप को चोक कर देगा।
इसके लिए NPM में बहुत सारे पैकेज उपलब्ध हैं । चुनें कि आपके लिए सबसे अच्छा क्या है।
यदि आप अनिश्चित हैं कि जो कुछ भी पारित किया गया है JSON.parse()
वह JSON मान्य है , तो कॉल को JSON.parse()
किसी try/catch
ब्लॉक के अंदर संलग्न करना सुनिश्चित करें । एक उपयोगकर्ता प्रदान करता है JSON स्ट्रिंग आपके एप्लिकेशन को क्रैश कर सकता है, और यहां तक कि सुरक्षा छेद भी हो सकता है। सुनिश्चित करें कि त्रुटि से निपटने के लिए किया जाता है यदि आप बाहरी रूप से JSON प्रदान करते हैं।
and could even lead to security holes
जिज्ञासा से बाहर, कैसे?
<script>...
, और त्रुटि क्लाइंट पक्ष को दी गई है, तो आपके पास XSS बग ठीक है। इसलिए IMO यह JSON त्रुटियों को संभालने के लिए महत्वपूर्ण है जहां आप इसे पार्स करते हैं।
require
JSON को शामिल करने के लिए उपयोग करने के लिए अच्छा नहीं होगा ?" और भी साइड इफेक्ट का दस्तावेजीकरण परेशान नहीं किया। इसका मतलब यह भी था कि दो भाषाओं में फ़ाइलों को स्वीकार करने की आवश्यकता है: जावास्क्रिप्ट, और JSON (नहीं वे समान नहीं हैं)। एसआरपी के लिए इतना ही।
JSON ऑब्जेक्ट का उपयोग करें :
JSON.parse(str);
JSON.parse का एक और उदाहरण:
var fs = require('fs');
var file = __dirname + '/config.json';
fs.readFile(file, 'utf8', function (err, data) {
if (err) {
console.log('Error: ' + err);
return;
}
data = JSON.parse(data);
console.dir(data);
});
मैं यह उल्लेख करना चाहता हूं कि वैश्विक JSON ऑब्जेक्ट के विकल्प हैं।
JSON.parse
और JSON.stringify
दोनों सिंक्रोनस हैं, इसलिए यदि आप बड़ी वस्तुओं से निपटना चाहते हैं तो आप कुछ अतुल्यकालिक JSON मॉड्यूल की जांच कर सकते हैं।
एक नज़र है: https://github.com/joyent/node/wiki/Modules#wiki-parsers-json
JSON.parse
आपके संपूर्ण एप्लिकेशन द्वारा पार्स किया जा रहा है, तो क्रैश या उपयोग करने जा रहा है process.on('uncaughtException', function(err) { ... });
, तो अंततः उपयोगकर्ता को "विकृत JSON" त्रुटि भेजने का कोई मौका नहीं मिलेगा।
async
पार्सर है? मुझे यह नहीं मिला।
node-fs
पुस्तकालय शामिल करें ।
var fs = require("fs");
var file = JSON.parse(fs.readFileSync("./PATH/data.json", "utf8"));
'Fs' लाइब्रेरी के बारे में अधिक जानकारी के लिए, http://nodejs.org/api/fs.html पर प्रलेखन देखें
चूँकि आप नहीं जानते कि आपका तार वास्तव में वैध है, इसलिए मैं इसे पहले एक कोशिश में डालूँगा। यह भी कोशिश करें कि पकड़ने वाले ब्लॉक नोड द्वारा अनुकूलित नहीं हैं, मैं पूरी चीज़ को दूसरे फ़ंक्शन में डालूंगा:
function tryParseJson(str) {
try {
return JSON.parse(str);
} catch (ex) {
return null;
}
}
या "async शैली" में
function tryParseJson(str, callback) {
process.nextTick(function () {
try {
callback(null, JSON.parse(str));
} catch (ex) {
callback(ex)
}
})
}
JSON स्ट्रीम पार्स करना? का उपयोग करें JSONStream
।
var request = require('request')
, JSONStream = require('JSONStream')
request({url: 'http://isaacs.couchone.com/registry/_all_docs'})
.pipe(JSONStream.parse('rows.*'))
.pipe(es.mapSync(function (data) {
return data
}))
यहाँ हर किसी ने JSON.parse के बारे में बताया है, इसलिए मैंने कुछ और कहने की सोची। ऐप्स के विकास को आसान और बेहतर बनाने के लिए कई मिडलवेयर के साथ एक बढ़िया मॉड्यूल कनेक्ट है। मिडलवेयर में से एक बॉडीपेयर है । यह JSON, html- form और इत्यादि को पार्स करता है । JSON के लिए एक विशिष्ट मिडलवेयर भी है जो केवल noop है ।
उपरोक्त लिंक पर एक नज़र डालें, यह वास्तव में आपके लिए उपयोगी हो सकता है।
JSON.parse("your string");
बस इतना ही।
जैसा कि यहां दिए गए अन्य जवाबों में बताया गया है, आप शायद या तो एक स्थानीय json फाइल की आवश्यकता चाहते हैं, जिसे आप जानते हैं कि वह सुरक्षित और वर्तमान है, जैसे कॉन्फ़िगरेशन फ़ाइल:
var objectFromRequire = require('path/to/my/config.json');
या एक वस्तु में एक स्ट्रिंग मान पार्स करने के लिए वैश्विक JSON ऑब्जेक्ट का उपयोग करने के लिए:
var stringContainingJson = '\"json that is obtained from somewhere\"';
var objectFromParse = JSON.parse(stringContainingJson);
ध्यान दें कि जब आपको किसी फ़ाइल की आवश्यकता होती है तो उस फ़ाइल की सामग्री का मूल्यांकन किया जाता है, जो कि एक json फ़ाइल नहीं बल्कि js फ़ाइल के मामले में एक सुरक्षा जोखिम का परिचय देती है।
यहाँ, मैंने एक डेमो प्रकाशित किया है जहाँ आप दोनों विधियों को देख सकते हैं और उनके साथ ऑनलाइन खेल सकते हैं (पार्सिंग उदाहरण app.js फ़ाइल में है - फिर रन बटन पर क्लिक करें और टर्मिनल में परिणाम देखें): http: // staging1 .codefresh.io / प्रयोगशालाओं / API / env / json-पार्स-उदाहरण
आप कोड को संशोधित कर सकते हैं और प्रभाव देख सकते हैं ...
NSON.js के साथ अपने कॉन्फ़िगरेशन के लिए JSON का उपयोग करना? इसे पढ़ें और 9000 से अधिक पर अपना कॉन्फ़िगरेशन कौशल प्राप्त करें ...
नोट: उस डेटा का दावा करने वाले लोग = ('./ data.json') की आवश्यकता है; एक सुरक्षा जोखिम है और जोशीले उत्साह के साथ लोगों के उत्तरों को नीचा दिखाना: आप बिल्कुल सही और पूरी तरह से गलत हैं । गैर-JSON को उस फ़ाइल में रखने का प्रयास करें ... नोड आपको एक त्रुटि देगा, ठीक उसी तरह जैसे अगर आपने एक ही चीज़ को बहुत धीमी और कठिन कोड मैनुअल फ़ाइल को पढ़ा और फिर बाद में JSON.parse () के साथ किया। कृपया गलत सूचना फैलाना बंद करें; आप दुनिया को नुकसान पहुंचा रहे हैं, मदद नहीं कर रहे हैं। नोड को यह अनुमति देने के लिए डिज़ाइन किया गया था ; यह एक सुरक्षा जोखिम नहीं है!
उचित अनुप्रयोग विन्यास की 3 + परतों में आते हैं :
अधिकांश डेवलपर्स अपने सर्वर और ऐप कॉन्फिग्रेशन का इलाज करते हैं जैसे कि यह बदल सकता है। यह नहीं कर सकता। आप एक-दूसरे के ऊपर ऊंची परतों से परिवर्तन कर सकते हैं , लेकिन आप आधार आवश्यकताओं को संशोधित कर रहे हैं । कुछ चीजों का अस्तित्व होना आवश्यक है! अपने कॉन्फिग एक्ट को ऐसे बनाएं जैसे यह अपरिवर्तनीय है, क्योंकि इसमें से कुछ मूल रूप से आपके सोर्स कोड की तरह है।
स्टार्टअप के बाद आपके बहुत सारे सामानों को बदलने में असफल होने से रोकने के लिए आपके पैटर्न को लोड / पकड़ने वाले ब्लॉक के साथ लोड करने जैसे एंटी-पैटर्न की ओर जाता है, और दिखावा आप बिना जारी रख सकते हैं अपने ठीक से सेटअप एप्लिकेशन के । आप नहीं कर सकते। यदि आप ऐसा कर सकते हैं, जो समुदाय / उपयोगकर्ता कॉन्फ़िगरेशन लेयर में है, न कि सर्वर / ऐप कॉन्फ़िगरेशन लेयर में। आप सिर्फ गलत कर रहे हैं। वैकल्पिक सामग्री शीर्ष पर स्तरित होनी चाहिए, जब एप्लिकेशन का बूटस्ट्रैप खत्म हो जाए।
दीवार के खिलाफ अपना सिर पीटना बंद करें: आपका कॉन्फ़िगरेशन अल्ट्रा सरल होना चाहिए ।
इस बात पर एक नज़र डालें कि एक प्रोटोकॉल-एग्नॉस्टिक और डेटासोर्स-एग्नोस्टिक सर्विस फ्रेमवर्क के रूप में कॉम्प्लेक्स के रूप में किसी चीज़ को सेटअप करना कितना आसान है, एक साधारण जोंस कॉन्फिग फाइल और सिंपल app.js फ़ाइल का उपयोग करना ...
कंटेनर-config.js ...
{
"service": {
"type" : "http",
"name" : "login",
"port" : 8085
},
"data": {
"type" : "mysql",
"host" : "localhost",
"user" : "notRoot",
"pass" : "oober1337",
"name" : "connect"
}
}
index.js ... (इंजन जो हर चीज को शक्ति देता है)
var config = require('./container-config.json'); // Get our service configuration.
var data = require(config.data.type); // Load our data source plugin ('npm install mysql' for mysql).
var service = require(config.service.type); // Load our service plugin ('http' is built-in to node).
var processor = require('./app.js'); // Load our processor (the code you write).
var connection = data.createConnection({ host: config.data.host, user: config.data.user, password: config.data.pass, database: config.data.name });
var server = service.createServer(processor);
connection.connect();
server.listen(config.service.port, function() { console.log("%s service listening on port %s", config.service.type, config.service.port); });
app.js ... (कोड जो आपके प्रोटोकॉल-अज्ञेय और डेटा-स्रोत अज्ञेय सेवा को शक्ति देता है)
module.exports = function(request, response){
response.end('Responding to: ' + request.url);
}
इस पैटर्न का उपयोग करके, अब आप अपने बूट किए गए ऐप के शीर्ष पर समुदाय और उपयोगकर्ता कॉन्फ़िगरेशन सामान लोड कर सकते हैं, देव ऑप्स आपके काम को एक कंटेनर में बंद करने और इसे स्केल करने के लिए तैयार है। आप मल्टीटेनेंट के लिए पढ़े हैं। उपयोगकर्ताभूमि पृथक है। अब आप इस बात से अलग हो सकते हैं कि आप किस सेवा प्रोटोकॉल का उपयोग कर रहे हैं, आप किस डेटाबेस प्रकार का उपयोग कर रहे हैं, और केवल अच्छे कोड लिखने पर ध्यान केंद्रित करें।
क्योंकि आप परतों का उपयोग कर रहे हैं, तो आप सब कुछ के लिए सच का एक ही स्रोत पर, किसी भी समय (स्तरित config वस्तु) पर हर कदम पर से बचने त्रुटि जाँच भरोसा कर सकते हैं, और, के बारे में "ओह बकवास, मैं कैसे बनाने के लिए जा रहा हूँ चिंता इस उचित विन्यास के बिना काम?? "।
मेरा समाधान:
var fs = require('fs');
var file = __dirname + '/config.json';
fs.readFile(file, 'utf8', function (err, data) {
if (err) {
console.log('Error: ' + err);
return;
}
data = JSON.parse(data);
console.dir(data);
});
TypeError: path must be a string or Buffer
त्रुटियाँ मिलती रहती हैं - कोई भी विचार जहां इस मुद्दे को डीबग करना शुरू करना है?
बस जवाब को पूरा करना चाहते हैं (जैसा कि मैंने इसके साथ थोड़ी देर के लिए संघर्ष किया), यह दिखाना चाहते हैं कि कैसे जौन जानकारी का उपयोग किया जाए, यह उदाहरण जौन ऐरे को एक्सेस करने से पता चलता है:
var request = require('request');
request('https://server/run?oper=get_groups_joined_by_user_id&user_id=5111298845048832', function (error, response, body) {
if (!error && response.statusCode == 200) {
var jsonArr = JSON.parse(body);
console.log(jsonArr);
console.log("group id:" + jsonArr[0].id);
}
})
बस इसे यथासंभव जटिल बनाने के लिए, और यथासंभव अधिक से अधिक पैकेज लाएं ...
const fs = require('fs');
const bluebird = require('bluebird');
const _ = require('lodash');
const readTextFile = _.partial(bluebird.promisify(fs.readFile), _, {encoding:'utf8',flag:'r'});
const readJsonFile = filename => readTextFile(filename).then(JSON.parse);
इससे आप कर सकते हैं:
var dataPromise = readJsonFile("foo.json");
dataPromise.then(console.log);
या यदि आप async / प्रतीक्षा का उपयोग कर रहे हैं:
let data = await readJsonFile("foo.json");
केवल उपयोग करने पर लाभ यह readFileSync
है कि आपका नोड सर्वर अन्य अनुरोधों को संसाधित कर सकता है, जबकि फ़ाइल डिस्क से पढ़ी जा रही है।
JSON.parse यह सुनिश्चित नहीं करेगा कि आप जोसन स्ट्रिंग की सुरक्षा कर रहे हैं। आपको एक पुस्तकालय देखना चाहिए जैसे कि json-safe-parse या एक समान पुस्तकालय।
Json-safe-parse npm पेज से:
JSON.parse महान है, लेकिन इसमें जावास्क्रिप्ट के संदर्भ में एक गंभीर दोष है: यह आपको विरासत में मिली संपत्तियों को ओवरराइड करने की अनुमति देता है। यह एक मुद्दा बन सकता है यदि आप JSON को एक अविश्वसनीय स्रोत (जैसे: एक उपयोगकर्ता) से पार्स कर रहे हैं, और उस पर कॉलिंग फ़ंक्शन आप मौजूद होने की उम्मीद करेंगे।
उत्तोलन लोदाश का एक त्रुटि ऑब्जेक्ट वापस करने का प्रयास करता है, जिसे आप isError फ़ंक्शन के साथ संभाल सकते हैं।
// Returns an error object on failure
function parseJSON(jsonString) {
return _.attempt(JSON.parse.bind(null, jsonString));
}
// Example Usage
var goodJson = '{"id":123}';
var badJson = '{id:123}';
var goodResult = parseJSON(goodJson);
var badResult = parseJSON(badJson);
if (_.isError(goodResult)) {
console.log('goodResult: handle error');
} else {
console.log('goodResult: continue processing');
}
// > goodResult: continue processing
if (_.isError(badResult)) {
console.log('badResult: handle error');
} else {
console.log('badResult: continue processing');
}
// > badResult: handle error
.bind
केवल _.attempt (JSON.parse, str) का उपयोग करने के बजाय क्यों जोड़ा
हमेशा कोशिश करें कि JSON.parse को कैच ब्लॉक में नोड के रूप में उपयोग किया जाए क्योंकि नोड में हमेशा एक अनपेक्षित त्रुटि होती है यदि आपके पास अपने जोंस में कुछ दूषित डेटा है तो साधारण JSON.Parse के बजाय इस कोड का उपयोग करें
try{
JSON.parse(data)
}
catch(e){
throw new Error("data is corrupted")
}
यदि आप अपने JSON में कुछ टिप्पणियां जोड़ना चाहते हैं और अनुगमन के अल्पविरामों को लागू करना चाहते हैं, तो आप नीचे दिए गए कार्यान्वयन का उपयोग कर सकते हैं:
var fs = require('fs');
var data = parseJsData('./message.json');
console.log('[INFO] data:', data);
function parseJsData(filename) {
var json = fs.readFileSync(filename, 'utf8')
.replace(/\s*\/\/.+/g, '')
.replace(/,(\s*\})/g, '}')
;
return JSON.parse(json);
}
ध्यान दें कि यदि "abc": "foo // bar"
आपके JSON में कुछ ऐसा है तो यह अच्छी तरह से काम नहीं कर सकता है । तो YMMV।
यदि JSON स्रोत फ़ाइल बहुत बड़ी है, तो मूल async के माध्यम से अतुल्यकालिक मार्ग पर विचार करना चाह सकते हैं। Node.js 8.0 के साथ इस प्रकार है।
const fs = require('fs')
const fsReadFile = (fileName) => {
fileName = `${__dirname}/${fileName}`
return new Promise((resolve, reject) => {
fs.readFile(fileName, 'utf8', (error, data) => {
if (!error && data) {
resolve(data)
} else {
reject(error);
}
});
})
}
async function parseJSON(fileName) {
try {
return JSON.parse(await fsReadFile(fileName));
} catch (err) {
return { Error: `Something has gone wrong: ${err}` };
}
}
parseJSON('veryBigFile.json')
.then(res => console.log(res))
.catch(err => console.log(err))
मैं fs-extra का उपयोग करता हूं । मुझे यह बहुत पसंद है क्योंकि, हालांकि यह कॉलबैक का समर्थन करता है- यह वादे का भी समर्थन करता है । तो यह मुझे बहुत अधिक पठनीय तरीके से अपना कोड लिखने में सक्षम बनाता है:
const fs = require('fs-extra');
fs.readJson("path/to/foo.json").then(obj => {
//Do dome stuff with obj
})
.catch(err => {
console.error(err);
});
इसमें कई उपयोगी विधियां भी हैं जो मानक fs
मॉड्यूल के साथ नहीं आते हैं और , इसके शीर्ष पर, यह मूल fs
मॉड्यूल से विधियों को भी पुल करता है और उन्हें प्रॉमिस करता है।
नोट: आप अभी भी देशी Node.js विधियों का उपयोग कर सकते हैं। उन्हें प्रॉमिस किया जाता है और fs-extra पर कॉपी किया जाता है। नोट देखें
fs.read()
&fs.write()
तो यह मूल रूप से सभी फायदे हैं। मुझे आशा है कि दूसरों को यह उपयोगी लगेगा।
यदि आपको JSON को Node.js के साथ सुरक्षित तरीके से पार्स करने की आवश्यकता है (aka: उपयोगकर्ता इनपुट डेटा, या एक सार्वजनिक एपीआई) मैं सुरक्षित json-parse का उपयोग करने का सुझाव दूंगा ।
उपयोग डिफ़ॉल्ट की तरह है JSON.parse
लेकिन यह आपके कोड की रक्षा करेगा:
const badJson = '{ "a": 5, "b": 6, "__proto__": { "x": 7 }, "constructor": {"prototype": {"bar": "baz"} } }'
const infected = JSON.parse(badJson)
console.log(infected.x) // print undefined
const x = Object.assign({}, infected)
console.log(x.x) // print 7
const sjson = require('secure-json-parse')
console.log(sjson.parse(badJson)) // it will throw by default, you can ignore malicious data also
आप JSON.parse () का उपयोग कर सकते हैं (जो कि एक फ़ंक्शन में बनाया गया है जो संभवतः आपको कोशिश करने वाले बयानों के साथ इसे लपेटने के लिए मजबूर करेगा)।
या कुछ JSON पार्सिंग npm लाइब्रेरी का उपयोग करें, कुछ json-parse-or की तरह
सुरक्षित पक्ष पर होने के लिए इसका उपयोग करें
var data = JSON.parse(Buffer.concat(arr).toString());
NodeJs एक जावास्क्रिप्ट आधारित सर्वर है, इसलिए आप शुद्ध जावास्क्रिप्ट में जिस तरह से कर सकते हैं ...
कल्पना कीजिए कि आप इस राशि Json में NodeJS ...
var details = '{ "name": "Alireza Dezfoolian", "netWorth": "$0" }';
var obj = JSON.parse(details);
और आप अपने json के एक पार्स संस्करण प्राप्त करने के लिए ऊपर कर सकते हैं ...
जैसा कि ऊपर दिए गए उत्तरों में बताया गया है, हम उपयोग कर सकते हैं JSON.parse()
JSON के तार को पार्स करने के लिए लेकिन पार्स करने से पहले, सही डेटा को पार्स करना सुनिश्चित करें अन्यथा यह आपके पूरे आवेदन को नीचे ला सकता है।
इसे इस तरह इस्तेमाल करना सुरक्षित है
let parsedObj = {}
try {
parsedObj = JSON.parse(data);
} catch(e) {
console.log("Cannot parse because data is not is proper json format")
}
का उपयोग करें JSON.parse(str);
। इसके बारे में यहाँ और पढ़ें ।
यहाँ कुछ उदाहरण हैं:
var jsonStr = '{"result":true, "count":42}';
obj = JSON.parse(jsonStr);
console.log(obj.count); // expected output: 42
console.log(obj.result); // expected output: true
यह सरल है, आप JSON का उपयोग करके स्ट्रिंग में कनवर्ट कर सकते हैं JSON.stringify(json_obj)
, और स्ट्रिंग को JSON का उपयोग करके परिवर्तित कर सकते हैं JSON.parse("your json string")
।