একটি জাভাস্ক্রিপ্ট অবজেক্টকে এমন একটির মধ্যে এনকোড করার একটি দ্রুত এবং সহজ উপায় string
যা আমি একটি GET
অনুরোধের মধ্য দিয়ে যেতে পারি ?
না jQuery
, অন্য কোনও ফ্রেমওয়ার্ক নেই - কেবল সরল জাভাস্ক্রিপ্ট :)
URLSearchParams
এখনই সমর্থন করে ...
একটি জাভাস্ক্রিপ্ট অবজেক্টকে এমন একটির মধ্যে এনকোড করার একটি দ্রুত এবং সহজ উপায় string
যা আমি একটি GET
অনুরোধের মধ্য দিয়ে যেতে পারি ?
না jQuery
, অন্য কোনও ফ্রেমওয়ার্ক নেই - কেবল সরল জাভাস্ক্রিপ্ট :)
URLSearchParams
এখনই সমর্থন করে ...
উত্তর:
এটার মত?
serialize = function(obj) {
var str = [];
for (var p in obj)
if (obj.hasOwnProperty(p)) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
return str.join("&");
}
console.log(serialize({
foo: "hi there",
bar: "100%"
}));
// foo=hi%20there&bar=100%25
সম্পাদনা করুন: এটি পুনরাবৃত্ত বস্তুগুলিকে রূপান্তর করে (ক্যোরির স্ট্রিংয়ের জন্য পিএইচপি "অ্যারে" স্বরলিপি ব্যবহার করে)
serialize = function(obj, prefix) {
var str = [],
p;
for (p in obj) {
if (obj.hasOwnProperty(p)) {
var k = prefix ? prefix + "[" + p + "]" : p,
v = obj[p];
str.push((v !== null && typeof v === "object") ?
serialize(v, k) :
encodeURIComponent(k) + "=" + encodeURIComponent(v));
}
}
return str.join("&");
}
console.log(serialize({
foo: "hi there",
bar: {
blah: 123,
quux: [1, 2, 3]
}
}));
// foo=hi%20there&bar%5Bblah%5D=123&bar%5Bquux%5D%5B0%5D=1&bar%5Bquux%5D%5B1%5D=2&bar%5Bquux%5D%5B2%5D=3
jQuery এর এর জন্য একটি ফাংশন রয়েছে jQuery.param()
, আপনি যদি ইতিমধ্যে এটি ব্যবহার করেন তবে আপনি এটি ব্যবহার করতে পারেন:
http://api.jquery.com/jquery.param/
উদাহরণ:
var params = { width:1680, height:1050 };
var str = jQuery.param( params );
str
এখন রয়েছে width=1680&height=1050
var a = []; a[5] = 'foo'; jQuery.param({ parameters: a });
ফলাফল "parameters[]=¶meters[]=¶meters[]=¶meters[]=¶meters[]=¶meters[]=foo"
। যা সঠিক, আপনি যা প্রত্যাশা করেছেন তা নাও হতে পারে।
কেবল ব্যবহার করুন URLSearchParams
এটি সমস্ত বর্তমান ব্রাউজারে কাজ করে
new URLSearchParams(object).toString()
let j = { m: 5, n: { k: 1 } }; new URLSearchParams(j).toString(); // result "m=5&n=%5Bobject+Object%5D"
stringify
যা করার আগে নেস্টেড জিনিসগুলি করতে পারেনURLSearchParams
Object.keys(obj).reduce(function(a,k){a.push(k+'='+encodeURIComponent(obj[k]));return a},[]).join('&')
সম্পাদনা করুন: আমি এই ওয়ান-লাইনারটি পছন্দ করি তবে আমি বাজি রাখি যদি এটি গ্রহণযোগ্য উত্তরটি শব্দার্থভাবে মিলায় তবে এটি আরও জনপ্রিয় উত্তর হবে:
function serialize( obj ) {
let str = '?' + Object.keys(obj).reduce(function(a, k){
a.push(k + '=' + encodeURIComponent(obj[k]));
return a;
}, []).join('&');
return str;
}
Object.keys(obj).map(k => k + '=' + encodeURIComponent(obj[k])).join('&')
Object.keys
আইটি> = 9
Object.keys(obj).map(k => `${k}=${encodeURIComponent(obj[k])}`).join('&')
Object.entries(obj).map(e => e.map(ee => encodeURIComponent(ee)).join('=')).join('&');
ES6 এ এখানে একটি ওলাইনার রয়েছে:
Object.keys(obj).map(k => `${encodeURIComponent(k)}=${encodeURIComponent(obj[k])}`).join('&');
export?actions[]=finance,create,edit
যখন এটি হওয়া উচিত ছিল export?actions[]=finance&actions[]=create&actions[]=edit
ভয়ঙ্কর মান standard
actions[]
পিএইচপি স্বরলিপি হয়; জাজানো action
পরিবর্তে একাধিক ব্যবহার করে ( []
প্রত্যয় নেই); অন্য কয়েকটি ওআরএম / সিএমএসের জন্য কমা-বিচ্ছিন্ন তালিকা ইত্যাদির প্রয়োজন হয় So সুতরাং "যদি এটি সাধারণ স্ট্রিং না হয় তবে প্রথমে নিশ্চিত হয়ে নিন যে আপনার সার্ভারটি কী চাইবে" know
const querystring = require('querystring')
const obj = {
foo: 'bar',
baz: 'tor'
}
let result = querystring.stringify(obj)
// foo=bar&baz=tor
তথ্যসূত্র: https://nodejs.org/api/querystring.html
আমি URLSearchParams
ইন্টারফেসটি ব্যবহার করার পরামর্শ দিচ্ছি :
const searchParams = new URLSearchParams();
const search = {foo: "hi there", bar: "100%" };
Object.keys(search).forEach(key => searchParams.append(key, search[key]));
console.log(searchParams.toString())
বা সার্চ অবজেক্টটি কনস্ট্রাক্টরের মধ্যে এইভাবে পাস করার মাধ্যমে:
const obj = {foo: "hi there", bar: "100%" };
const params = new URLSearchParams(obj).toString();
ব্যবহারকারী 187291 দ্বারা গৃহীত সমাধানের জন্য একটি ছোট সংশোধন:
serialize = function(obj) {
var str = [];
for(var p in obj){
if (obj.hasOwnProperty(p)) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
}
return str.join("&");
}
অবজেক্টে হ'লঅনপ্রোপার্টি পরীক্ষা করা জেএসলিন্ট / জেএসহিন্টকে খুশি করে তোলে এবং এটি ঘটনাক্রমে ঘটনাক্রমে পদ্ধতি বা অন্য জিনিসগুলির সিরিয়ালাইজিং পদ্ধতিগুলি রোধ করে যদি বস্তুটি একটি সাধারণ অভিধান ছাড়া আর কিছু হয়। এই পৃষ্ঠায় বিবৃতিগুলির জন্য অনুচ্ছেদটি দেখুন: http://javascript.crockford.com/code.html
ওয়েল, সবাই মনে হয় এখানে তার ওয়ান-লাইনার লাগিয়েছে তাই এখানে আমার চলে যায়:
const encoded = Object.entries(obj).map(([k, v]) => `${k}=${encodeURIComponent(v)}`).join("&");
আপনার কি স্বেচ্ছাচারী বস্তু প্রেরণ করা দরকার? যদি তা হয় তবে জিইটি হ'ল একটি খারাপ ধারণা, যেহেতু ইউআরএল এজেন্টস এবং ওয়েব সার্ভাররা গ্রহণ করবে এমন ইউআরএলগুলির দৈর্ঘ্যের সীমা রয়েছে। আমার পরামর্শটি হ'ল নাম মান সংযোজনগুলির একটি অ্যারে তৈরি করতে পাঠাতে এবং তারপরে একটি ক্যোরি স্ট্রিং তৈরি করতে হবে:
function QueryStringBuilder() {
var nameValues = [];
this.add = function(name, value) {
nameValues.push( {name: name, value: value} );
};
this.toQueryString = function() {
var segments = [], nameValue;
for (var i = 0, len = nameValues.length; i < len; i++) {
nameValue = nameValues[i];
segments[i] = encodeURIComponent(nameValue.name) + "=" + encodeURIComponent(nameValue.value);
}
return segments.join("&");
};
}
var qsb = new QueryStringBuilder();
qsb.add("veg", "cabbage");
qsb.add("vegCount", "5");
alert( qsb.toQueryString() );
এই পদ্ধতিটি একটি জাভাস্ক্রিপ্ট অবজেক্টকে একটিতে রূপান্তর করে URI Query String
। নেস্টেড অ্যারে এবং অবজেক্টগুলি (ইন Rails
/ PHP
সিনট্যাক্স) পরিচালনা করে:
function serializeQuery(params, prefix) {
const query = Object.keys(params).map((key) => {
const value = params[key];
if (params.constructor === Array)
key = `${prefix}[]`;
else if (params.constructor === Object)
key = (prefix ? `${prefix}[${key}]` : key);
if (typeof value === 'object')
return serializeQuery(value, key);
else
return `${key}=${encodeURIComponent(value)}`;
});
return [].concat.apply([], query).join('&');
}
ব্যবহারের উদাহরণ:
let params = {
a: 100,
b: 'has spaces',
c: [1, 2, 3],
d: { x: 9, y: 8}
}
serializeQuery(params)
// returns 'a=100&b=has%20spaces&c[]=1&c[]=2&c[]=3&d[x]=9&d[y]=8
function
বাদ দেওয়ার জন্য যদি আপনি সম্পাদনা করেন তবে তা আকর্ষণীয় হবে falsy
(নাল, অপরিজ্ঞাত, NaN, '') ...
JSON ব্যবহার করুন।
কীভাবে প্রয়োগ করা যায় সে সম্পর্কে ধারণাগুলির জন্য এই প্রশ্নটি একবার দেখুন ।
গৃহীত উত্তরের কফিসিপি সংস্করণ এখানে। এটি কারও জন্য সময় সাশ্রয় করতে পারে।
serialize = (obj, prefix) ->
str = []
for p, v of obj
k = if prefix then prefix + "[" + p + "]" else p
if typeof v == "object"
str.push(serialize(v, k))
else
str.push(encodeURIComponent(k) + "=" + encodeURIComponent(v))
str.join("&")
এখানে অবজেক্ট.এন্ট্রিগুলির সাথে একটি সংক্ষিপ্ত এবং পুনরাবৃত্ত সংস্করণ । এটি নির্বিচারে নেস্টেড অ্যারেগুলি পরিচালনা করে তবে নেস্টেড বস্তুগুলি নয়। এটি খালি উপাদানগুলিও সরিয়ে দেয়:
const format = (k,v) => v !== null ? `${k}=${encodeURIComponent(v)}` : ''
const to_qs = (obj) => {
return [].concat(...Object.entries(obj)
.map(([k,v]) => Array.isArray(v)
? v.map(arr => to_qs({[k]:arr}))
: format(k,v)))
.filter(x => x)
.join('&');
}
উদাহরণ:
let json = {
a: [1, 2, 3],
b: [], // omit b
c: 1,
d: "test&encoding", // uriencode
e: [[4,5],[6,7]], // flatten this
f: null, // omit nulls
g: 0
};
let qs = to_qs(json)
=> "a=1&a=2&a=3&c=1&d=test%26encoding&e=4&e=5&e=6&e=7&g=0"
ES7 এ আপনি এটি এক লাইনে লিখতে পারেন:
const serialize = (obj) => (Object.entries(obj).map(i => [i[0], encodeURIComponent(i[1])].join('=')).join('&'))
যদি কারও আবার প্রয়োজন হয় তবে অবজেক্টটিকে ক্যোরি স্ট্রিংয়ে রূপান্তর করতে একক লাইন
let Objs = { a: 'obejct-a', b: 'object-b' }
Object.keys(objs).map(key => key + '=' + objs[key]).join('&')
// result will be a=object-a&b=object-b
আমার একটি সহজ সমাধান রয়েছে যা কোনও তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করে না এবং ইতিমধ্যে যে কোনও ব্রাউজারে "অবজেক্ট.কিজ" (ওরফে সমস্ত আধুনিক ব্রাউজার + প্রান্ত + অর্থাত্) রয়েছে এমন কোনও ব্রাউজারে ব্যবহারের জন্য প্রস্তুত:
ES5 এ
function(a){
if( typeof(a) !== 'object' )
return '';
return `?${Object.keys(a).map(k=>`${k}=${a[k]}`).join('&')}`;
}
ES3 এ
function(a){
if( typeof(a) !== 'object' )
return '';
return '?' + Object.keys(a).map(function(k){ return k + '=' + a[k] }).join('&');
}
আপনি যদি কোনও নেস্টেড অবজেক্টকে পুনরাবৃত্তভাবে রূপান্তর করতে চান এবং অবজেক্টটিতে অ্যারে থাকতে পারে এবং নাও থাকতে পারে (এবং অ্যারেতে অবজেক্টস বা অ্যারে ইত্যাদি থাকতে পারে), তবে সমাধানটি খানিকটা জটিল হয়ে যায়। এটি আমার চেষ্টা।
আপনি প্রতিটি অবজেক্ট সদস্যের জন্য এটি যে প্রধান অবজেক্টের অধীনে থাকে তার গভীরতা রেকর্ড করতে চান কিনা তা বেছে নিতে এবং রূপান্তরকারী অ্যারে থেকে আসা সদস্যগুলিতে আপনি কোনও লেবেল যুক্ত করতে চান কিনা তা বেছে নিতে আমি কয়েকটি বিকল্প যুক্ত করেছি।
জিনিসটির প্যারামিটারটি সত্যই কোনও বস্তু বা অ্যারে গ্রহণ করে কিনা তা আদর্শভাবে আপনার পরীক্ষা করা উচিত।
function thingToString(thing,maxDepth,recordLevel,markArrays){
//thing: object or array to be recursively serialized
//maxDepth (int or false):
// (int) how deep to go with converting objects/arrays within objs/arrays
// (false) no limit to recursive objects/arrays within objects/arrays
//recordLevel (boolean):
// true - insert "(level 1)" before transcript of members at level one (etc)
// false - just
//markArrays (boolean):
// insert text to indicate any members that came from arrays
var result = "";
if (maxDepth !== false && typeof maxDepth != 'number') {maxDepth = 3;}
var runningDepth = 0;//Keeps track how deep we're into recursion
//First prepare the function, so that it can call itself recursively
function serializeAnything(thing){
//Set path-finder values
runningDepth += 1;
if(recordLevel){result += "(level " + runningDepth + ")";}
//First convert any arrays to object so they can be processed
if (thing instanceof Array){
var realObj = {};var key;
if (markArrays) {realObj['type'] = "converted array";}
for (var i = 0;i < thing.length;i++){
if (markArrays) {key = "a" + i;} else {key = i;}
realObj[key] = thing[i];
}
thing = realObj;
console.log('converted one array to ' + typeof realObj);
console.log(thing);
}
//Then deal with it
for (var member in thing){
if (typeof thing[member] == 'object' && runningDepth < maxDepth){
serializeAnything(thing[member]);
//When a sub-object/array is serialized, it will add one to
//running depth. But when we continue to this object/array's
//next sibling, the level must go back up by one
runningDepth -= 1;
} else if (maxDepth !== false && runningDepth >= maxDepth) {
console.log('Reached bottom');
} else
if (
typeof thing[member] == "string" ||
typeof thing[member] == 'boolean' ||
typeof thing[member] == 'number'
){
result += "(" + member + ": " + thing[member] + ") ";
} else {
result += "(" + member + ": [" + typeof thing[member] + " not supported]) ";
}
}
}
//Actually kick off the serialization
serializeAnything(thing);
return result;
}
গৃহীত সমাধানের জন্য সংযোজন, এটি অবজেক্টগুলির এবং অ্যারের সাথে কাজ করে:
parseJsonAsQueryString = function (obj, prefix, objName) {
var str = [];
for (var p in obj) {
if (obj.hasOwnProperty(p)) {
var v = obj[p];
if (typeof v == "object") {
var k = (objName ? objName + '.' : '') + (prefix ? prefix + "[" + p + "]" : p);
str.push(parseJsonAsQueryString(v, k));
} else {
var k = (objName ? objName + '.' : '') + (prefix ? prefix + '.' + p : p);
str.push(encodeURIComponent(k) + "=" + encodeURIComponent(v));
//str.push(k + "=" + v);
}
}
}
return str.join("&");
}
এছাড়াও আপনি যদি অ্যাপ নেটওয়ান এমভিসি ক্রিয়া পদ্ধতিগুলির মতো অবজেক্ট পরামিতিগুলি ব্যবহার করছেন তবে অবজেক্ট নাম যুক্ত করেছেন।
খানিকটা ভাল দেখায়
objectToQueryString(obj, prefix) {
return Object.keys(obj).map(objKey => {
if (obj.hasOwnProperty(objKey)) {
const key = prefix ? `${prefix}[${objKey}]` : objKey;
const value = obj[objKey];
return typeof value === "object" ?
this.objectToQueryString(value, key) :
`${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
}
return null;
}).join("&");
}
আমি জেএসএন স্ট্রিংফায়ারের তুলনা করেছি এবং ফলাফলগুলি নীচে রয়েছে:
JSON: {"_id":"5973782bdb9a930533b05cb2","isActive":true,"balance":"$1,446.35","age":32,"name":"Logan Keller","email":"logankeller@artiq.com","phone":"+1 (952) 533-2258","friends":[{"id":0,"name":"Colon Salazar"},{"id":1,"name":"French Mcneil"},{"id":2,"name":"Carol Martin"}],"favoriteFruit":"banana"}
Rison: (_id:'5973782bdb9a930533b05cb2',age:32,balance:'$1,446.35',email:'logankeller@artiq.com',favoriteFruit:banana,friends:!((id:0,name:'Colon Salazar'),(id:1,name:'French Mcneil'),(id:2,name:'Carol Martin')),isActive:!t,name:'Logan Keller',phone:'+1 (952) 533-2258')
O-Rison: _id:'5973782bdb9a930533b05cb2',age:32,balance:'$1,446.35',email:'logankeller@artiq.com',favoriteFruit:banana,friends:!((id:0,name:'Colon Salazar'),(id:1,name:'French Mcneil'),(id:2,name:'Carol Martin')),isActive:!t,name:'Logan Keller',phone:'+1 (952) 533-2258'
JSURL: ~(_id~'5973782bdb9a930533b05cb2~isActive~true~balance~'!1*2c446.35~age~32~name~'Logan*20Keller~email~'logankeller*40artiq.com~phone~'*2b1*20*28952*29*20533-2258~friends~(~(id~0~name~'Colon*20Salazar)~(id~1~name~'French*20Mcneil)~(id~2~name~'Carol*20Martin))~favoriteFruit~'banana)
QS: _id=5973782bdb9a930533b05cb2&isActive=true&balance=$1,446.35&age=32&name=Logan Keller&email=logankeller@artiq.com&phone=+1 (952) 533-2258&friends[0][id]=0&friends[0][name]=Colon Salazar&friends[1][id]=1&friends[1][name]=French Mcneil&friends[2][id]=2&friends[2][name]=Carol Martin&favoriteFruit=banana
URLON: $_id=5973782bdb9a930533b05cb2&isActive:true&balance=$1,446.35&age:32&name=Logan%20Keller&email=logankeller@artiq.com&phone=+1%20(952)%20533-2258&friends@$id:0&name=Colon%20Salazar;&$id:1&name=French%20Mcneil;&$id:2&name=Carol%20Martin;;&favoriteFruit=banana
QS-JSON: isActive=true&balance=%241%2C446.35&age=32&name=Logan+Keller&email=logankeller%40artiq.com&phone=%2B1+(952)+533-2258&friends(0).id=0&friends(0).name=Colon+Salazar&friends(1).id=1&friends(1).name=French+Mcneil&friends(2).id=2&friends(2).name=Carol+Martin&favoriteFruit=banana
এর মধ্যে সংক্ষিপ্ততম হ'ল ইউআরএল অবজেক্ট নোটেশন ।
ঠিক আছে, এটি একটি পুরানো পোস্ট তবে আমি এই সমস্যার মুখোমুখি হয়েছি এবং আমি আমার ব্যক্তিগত সমাধান খুঁজে পেয়েছি .. সম্ভবত অন্য কাউকে সাহায্য করতে পারে ..
function objToQueryString(obj){
var k = Object.keys(obj);
var s = "";
for(var i=0;i<k.length;i++) {
s += k[i] + "=" + encodeURIComponent(obj[k[i]]);
if (i != k.length -1) s += "&";
}
return s;
};
উপরের উত্তরগুলি পূরণ করে না যদি আপনার অনেক নেস্টেড অবজেক্ট থাকে। পরিবর্তে আপনি এখান থেকে ফাংশন পরম চয়ন করতে পারেন - https://github.com/ জ্ঞানসেকোড / জ্যাকোরি-param/blob/master/jquery-param.js এটি আমার পক্ষে খুব ভালভাবে কাজ করেছে!
var param = function (a) {
var s = [], rbracket = /\[\]$/,
isArray = function (obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}, add = function (k, v) {
v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;
s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);
}, buildParams = function (prefix, obj) {
var i, len, key;
if (prefix) {
if (isArray(obj)) {
for (i = 0, len = obj.length; i < len; i++) {
if (rbracket.test(prefix)) {
add(prefix, obj[i]);
} else {
buildParams(prefix + '[' + (typeof obj[i] === 'object' ? i : '') + ']', obj[i]);
}
}
} else if (obj && String(obj) === '[object Object]') {
for (key in obj) {
buildParams(prefix + '[' + key + ']', obj[key]);
}
} else {
add(prefix, obj);
}
} else if (isArray(obj)) {
for (i = 0, len = obj.length; i < len; i++) {
add(obj[i].name, obj[i].value);
}
} else {
for (key in obj) {
buildParams(key, obj[key]);
}
}
return s;
};
return buildParams('', a).join('&').replace(/%20/g, '+');
};
একটি জাভাস্ক্রিপ্ট অবজেক্টের উত্তর STRING এঙ্কোডিংয়ের জন্য ES6 সমাধান
const params = {
a: 1,
b: 'query stringify',
c: null,
d: undefined,
f: '',
g: { foo: 1, bar: 2 },
h: ['Winterfell', 'Westeros', 'Braavos'],
i: { first: { second: { third: 3 }}}
}
static toQueryString(params = {}, prefix) {
const query = Object.keys(params).map((k) => {
let key = k;
const value = params[key];
if (!value && (value === null || value === undefined || isNaN(value))) {
value = '';
}
switch (params.constructor) {
case Array:
key = `${prefix}[]`;
break;
case Object:
key = (prefix ? `${prefix}[${key}]` : key);
break;
}
if (typeof value === 'object') {
return this.toQueryString(value, key); // for nested objects
}
return `${key}=${encodeURIComponent(value)}`;
});
return query.join('&');
}
toQueryString (প্যারাম)
"a=1&b=query%20stringify&c=&d=&f=&g[foo]=1&g[bar]=2&h[]=Winterfell&h[]=Westeros&h[]=Braavos&i[first][second][third]=3"
এটি এমন একটি সমাধান যা বাক্স থেকে বাইরে নেট নেট ব্যাকেন্ডের জন্য কাজ করবে। আমি এই থ্রেডের প্রাথমিক উত্তর নিয়েছি এবং আমাদের। নেট প্রয়োজন অনুসারে এটি আপডেট করেছি।
function objectToQuerystring(params) {
var result = '';
function convertJsonToQueryString(data, progress, name) {
name = name || '';
progress = progress || '';
if (typeof data === 'object') {
Object.keys(data).forEach(function (key) {
var value = data[key];
if (name == '') {
convertJsonToQueryString(value, progress, key);
} else {
if (isNaN(parseInt(key))) {
convertJsonToQueryString(value, progress, name + '.' + key);
} else {
convertJsonToQueryString(value, progress, name + '[' + key+ ']');
}
}
})
} else {
result = result ? result.concat('&') : result.concat('?');
result = result.concat(`${name}=${data}`);
}
}
convertJsonToQueryString(params);
return result;
}
আমি কেবল তার জন্য একটি প্যাকেজ লিখেছি: অবজেক্ট-ক্যোয়ারী-স্ট্রিং :)
নেস্টেড অবজেক্টস, অ্যারে, কাস্টম এনকোডিং ফাংশন ইত্যাদি সমর্থন করে হালকা ও জিকুয়েরি মুক্ত।
// TypeScript
import { queryString } from 'object-query-string';
// Node.js
const { queryString } = require("object-query-string");
const query = queryString({
filter: {
brands: ["Audi"],
models: ["A4", "A6", "A8"],
accidentFree: true
},
sort: 'mileage'
});
আয়
filter[brands][]=Audi&filter[models][]=A4&filter[models][]=A6&filter[models][]=A8&filter[accidentFree]=true&sort=milage
আর একটি উপায় (কোনও পুনরাবৃত্তিযোগ্য বস্তু নেই):
getQueryString = function(obj)
{
result = "";
for(param in obj)
result += ( encodeURIComponent(param) + '=' + encodeURIComponent(obj[param]) + '&' );
if(result) //it's not empty string when at least one key/value pair was added. In such case we need to remove the last '&' char
result = result.substr(0, result.length - 1); //If length is zero or negative, substr returns an empty string [ref. http://msdn.microsoft.com/en-us/library/0esxc5wy(v=VS.85).aspx]
return result;
}
alert( getQueryString({foo: "hi there", bar: 123, quux: 2 }) );
উত্তরটি @ ব্যবহারকারী 187291 থেকে দেখুন, জেসন নেস্টেড অ্যারে রূপান্তরিত করতে প্যারামিটার হিসাবে "ইসআরে" যুক্ত করুন।
data : {
staffId : "00000001",
Detail : [ {
"identityId" : "123456"
}, {
"identityId" : "654321"
} ],
}
ফলাফল করতে:
staffId = 00000001 & বিস্তারিত [0] .identityId = 123456 & বিস্তারিত [1] .identityId = 654321
serialize = function(obj, prefix, isArray) {
var str = [],p = 0;
for (p in obj) {
if (obj.hasOwnProperty(p)) {
var k, v;
if (isArray)
k = prefix ? prefix + "[" + p + "]" : p, v = obj[p];
else
k = prefix ? prefix + "." + p + "" : p, v = obj[p];
if (v !== null && typeof v === "object") {
if (Array.isArray(v)) {
serialize(v, k, true);
} else {
serialize(v, k, false);
}
} else {
var query = k + "=" + v;
str.push(query);
}
}
}
return str.join("&");
};
serialize(data, "prefix", false);
আপনি সাধারণ জাভাস্ক্রিপ্ট ব্যবহার করে এটি অর্জন করতে পারেন ।
const stringData = '?name=Nikhil&surname=Mahirrao&age=30';
const newData= {};
stringData.replace('?', '').split('&').map((value) => {
const temp = value.split('=');
newData[temp[0]] = temp[1];
});
console.log('stringData: '+stringData);
console.log('newData: ');
console.log(newData);