Konvertuokite objektą į eilutę

Kaip konvertuoti javascript objektą į eilutę?

Pavyzdys:

 var o = {a:1, b:2} console.log(o) console.log('Item: ' + o) 

Išvada:

Objektas {a = 1, b = 2} // labai gerai nuskaitomas išėjimas :)
Elementas: [Objekto objektas] // Nežinau, kas yra viduje: (

835
10 апр. nustatė user680174 balandžio 10 d 2011-04-10 18:35 '11, 18:35, 2011-04-10 18:35
@ 30 atsakymų

Aš rekomenduoju naudoti JSON.stringify , kuris konvertuoja kintamųjų rinkinį į objektą į JSON eilutę. Dauguma šiuolaikinių naršyklių iš pradžių palaiko šį metodą, bet tiems, kurie to nedaro, galite įjungti JS versiją :

 var obj = { name: 'myObj' }; JSON.stringify(obj); 
1190
10 апр. Gary Chambers atsakymas, pateiktas balandžio 10 d 2011-04-10 18:44 '11, 18:44, 2011-04-10 18:44

Naudokite „JavaScript“ funkciją „String“ ().

  String(yourobject); //returns [object Object] 

arba

border=0
 JSON.stringify(yourobject) 

,

86
15 апр. atsakymą pateikė Vikram Pote balandžio 15 d 2016-04-15 14:07 '16, 14:07 PM 2016-04-15 14:07

Žinoma, norėdami konvertuoti objektą į eilutę, turite naudoti savo metodą, pavyzdžiui:

 function objToString (obj) { var str = ''; for (var p in obj) { if (obj.hasOwnProperty(p)) { str += p + '::' + obj[p] + '\n'; } } return str; } 

Tiesą sakant, pirmiau minėtas pavyzdys rodo bendrą požiūrį; Galite naudoti kažką panašaus http://phpjs.org/functions/var_exportium78 arba http://phpjs.org/functions/var_dump:604

arba, jei nenaudojate metodų (veikia kaip objekto ypatybės), galite naudoti naują standartą (tačiau neįdiegtą senesnėse naršyklėse, nors galite rasti naudingą įrankį, kad taip pat jiems padėtų), JSON.stringify (). Bet vėlgi, tai neveikia, jei objektas naudoja funkcijas ar kitas savybes, kurių JSON negalima serializuoti.

84
10 апр. atsakymą pateikė Brett Zamir, balandžio 10 d 2011-04-10 18:49 '11 at 18:49 2011-04-10 18:49

Palaikydami console , galite tiesiog naudoti kablelį vietoj + . + bandys konvertuoti objektą į eilutę, o kableliu jis bus rodomas atskirai konsolėje.

Pavyzdys:

 var o = {a:1, b:2}; console.log(o); console.log('Item: ' + o); console.log('Item: ', o); // :) 

Išvada:

 Object { a=1, b=2} // useful Item: [object Object] // not useful Item: Object {a: 1, b: 2} // Best of both worlds! :) 

Nuoroda: https://developer.mozilla.org/en-US/docs/Web/API/Console.log

68
07 янв. Atsakyti Luke 07 Jan 2015-01-07 19:23 '15, 19:23, 2015-01-07 19:23

EDIT Nenaudokite šio atsakymo, nes jis neveikia „Internet Explorer“. Naudokite Gary Chambers sprendimą .

toSource () yra funkcija, kurios ieškote, kad ją parašysite kaip JSON.

 var object = {}; object.first = "test"; object.second = "test2"; alert(object.toSource()); 
32
10 апр. Gazlerio atsakymas, pateiktas balandžio 10 d 2011-04-10 18:40 '11, 18:40, 2011-04-10 18:40

Vienas variantas :

console.log('Item: ' + JSON.stringify(o));

2019

29
19 июня '15 в 8:42 2015-06-19 08:42 atsakymas pateikiamas nabn birželio 19, 15, 8:42 2015-06-19 08:42

Nė vienas iš sprendimų čia nebuvo. JSON.stringify yra panašus į tai, ką daugelis sako, tačiau ji išjungia funkcijas ir atrodo, kad kai kuriems objektams ir masyvams, kuriuos bandžiau išbandyti, atrodo, kad jie yra sugadinti.

Priėmiau sprendimą, kuris veikia bent „Chrome“. Naršydami čia, kad kiekvienas, kuris jį stebėtų „Google“, galėtų jį rasti.

 //Make an object a string that evaluates to an equivalent object // Note that eval() seems tricky and sometimes you have to do // something like eval("a = " + yourString), then use the value // of a. // // Also this leaves extra commas after everything, but JavaScript // ignores them. function convertToText(obj) { //create an array that will later be joined into a string. var string = []; //is object // Both arrays and objects seem to return "object" // when typeof(obj) is applied to them. So instead // I am checking to see if they have the property // join, which normal objects don't have but // arrays do. if (typeof(obj) == "object"  (obj.join == undefined)) { string.push("{"); for (prop in obj) { string.push(prop, ": ", convertToText(obj[prop]), ","); }; string.push("}"); //is array } else if (typeof(obj) == "object"  !(obj.join == undefined)) { string.push("[") for(prop in obj) { string.push(convertToText(obj[prop]), ","); } string.push("]") //is function } else if (typeof(obj) == "function") { string.push(obj.toString()) //all other values can be done with JSON.stringify } else { string.push(JSON.stringify(obj)) } return string.join("") } 

EDIT: Aš žinau, kad šį kodą galima patobulinti, tačiau jis neturėjo laiko tai padaryti. Andrey pasiūlė patobulinti komentarą:

Čia yra šiek tiek pakeistas kodas, kuris gali apdoroti „nulį“ ir „neapibrėžtą“, taip pat nėra pridėta pernelyg daug kablelių.

Naudokite ją savo pačių rizika, nes aš visai nežiūrėjau. Nesivaržykite pasiūlyti papildomų patobulinimų kaip komentarą.

20
22 авг. Atsakymą pateikė Houshalter 22 rug . 2013-08-22 01:44 '13 ne 1:44 2013-08-22 01:44

Jei tiesiog išvestumėte į konsolę, galite naudoti console.log('string:', obj) . Atkreipkite dėmesį į kablelį .

18
14 авг. Alexandre R. Janini atsakymas 14 rug . 2014-08-14 15:53 '14, 15:53, 2014-08-14 15:53

Kur žinote, kad objektas yra tik loginis, data, eilutė, numeris ir tt „JavaScript“ funkcija „String“ () veikia gerai. Neseniai tai buvo naudinga dirbant su vertėmis, gaunamomis iš „jquery $ .each“ funkcijos.

Pavyzdžiui, po visų elementų konversijos į „vertę“ į eilutę:

 $.each(this, function (name, value) { alert(String(value)); }); 

Skaitykite daugiau čia:

http://www.w3schools.com/jsref/jsref_string.asp

14
11 июля '13 в 7:12 2013-07-11 07:12 atsakymą pateikė Jake Drew, liepos 11 d., 13 val
 var obj={ name:'xyz', Address:'123, Somestreet' } var convertedString=JSON.stringify(obj) console.log("literal object is",obj ,typeof obj); console.log("converted string :",convertedString); console.log(" convertedString type:",typeof convertedString); 
13
08 мая '17 в 15:06 2017-05-08 15:06 atsakymas pateikiamas saulėtą rai 08 gegužės 17 d. 15:06 2017-05-08 15:06

Aš ją ieškojau ir giliai rekursyviai parašiau:

 function objToString(obj, ndeep) { if(obj == null){ return String(obj); } switch(typeof obj){ case "string": return '"'+obj+'"'; case "function": return obj.name || obj.toString(); case "object": var indent = Array(ndeep||1).join('\t'), isArray = Array.isArray(obj); return '{['[+isArray] + Object.keys(obj).map(function(key){ return '\n\t' + indent + key + ': ' + objToString(obj[key], (ndeep||1)+1); }).join(',') + '\n' + indent + '}]'[+isArray]; default: return obj.toString(); } } 

Naudojimas: objToString({ a: 1, b: { c: "test" } })

10
19 нояб. SylvainPV atsakė 19 lapkričio. 2014-11-19 01:57 '14 ne 1:57 2014-11-19 01:57

Jei tik norite matyti derinimo objektą, galite naudoti

 var o = {a:1, b:2} console.dir(o) 
9

JSON metodai yra gana prastesni nei Gecko.toSource () primityvus.

Palyginamiesiems bandymams žr.

Be to, aukščiau pateiktas atsakymas yra susijęs su http://forums.devshed.com/javascript-development-115/tosource-with-arrays-in-ie-386109.html , kuris, kaip ir JSON, yra kitas straipsnis http: // www.davidpirek.com/blog/object-to-string-how-to-deserialize-json naudoja „ExtJs JSON kodekso kodą“ ) negali tvarkyti apykaitinių nuorodų ir yra neišsami. Toliau pateiktame kode pateikiami apribojimai (apgaulingi) (nustatyti tvarkant masyvus ir objektus be turinio).

( tiesioginė nuoroda į kodą //forums.devshed.com/.../tosource-with-arrays-in -ie-386109 )

 javascript: Object.prototype.spoof=function(){ if (this instanceof String){ return '(new String("'+this.replace(/"/g, '\\"')+'"))'; } var str=(this instanceof Array) ? '[' : (this instanceof Object) ? '{' : '('; for (var i in this){ if (this[i] != Object.prototype.spoof) { if (this instanceof Array == false) { str+=(i.match(/\W/)) ? '"'+i.replace('"', '\\"')+'":' : i+':'; } if (typeof this[i] == 'string'){ str+='"'+this[i].replace('"', '\\"'); } else if (this[i] instanceof Date){ str+='new Date("'+this[i].toGMTString()+'")'; } else if (this[i] instanceof Array || this[i] instanceof Object){ str+=this[i].spoof(); } else { str+=this[i]; } str+=', '; } }; str=(str.length>2?str.substring(0, str.length-2):str)+( (this instanceof Array) ? ']' : (this instanceof Object) ? '}' : ')' ); return str; }; for(i in objRA=[ [ 'Simple Raw Object source code:', '[new Array, new Object, new Boolean, new Number, ' + 'new String, new RegExp, new Function, new Date]' ] , [ 'Literal Instances source code:', '[ [], {}, true, 1, "", /./, function(){}, new Date() ]' ] , [ 'some predefined entities:', '[JSON, Math, null, Infinity, NaN, ' + 'void(0), Function, Array, Object, undefined]' ] ]) alert([ '\n\n\ntesting:',objRA[i][0],objRA[i][1], '\n.toSource()',(obj=eval(objRA[i][1])).toSource(), '\ntoSource() spoof:',obj.spoof() ].join('\n')); 

kuri rodo:

 testing: Simple Raw Object source code: [new Array, new Object, new Boolean, new Number, new String, new RegExp, new Function, new Date] .toSource() [[], {}, (new Boolean(false)), (new Number(0)), (new String("")), /(?:)/, (function anonymous() {}), (new Date(1303248037722))] toSource() spoof: [[], {}, {}, {}, (new String("")), {}, {}, new Date("Tue, 19 Apr 2011 21:20:37 GMT")] 

ir

 testing: Literal Instances source code: [ [], {}, true, 1, "", /./, function(){}, new Date() ] .toSource() [[], {}, true, 1, "", /./, (function () {}), (new Date(1303248055778))] toSource() spoof: [[], {}, true, 1, ", {}, {}, new Date("Tue, 19 Apr 2011 21:20:55 GMT")] 

ir

 testing: some predefined entities: [JSON, Math, null, Infinity, NaN, void(0), Function, Array, Object, undefined] .toSource() [JSON, Math, null, Infinity, NaN, (void 0), function Function() {[native code]}, function Array() {[native code]}, function Object() {[native code]}, (void 0)] toSource() spoof: [{}, {}, null, Infinity, NaN, undefined, {}, {}, {}, undefined] 
6
20 апр. Ekim atsakė balandžio 20 d. 2011-04-20 03:27 '11 at 3:27 2011-04-20 03:27

Kadangi „Firefox“ nesukuria objekto kaip ekrano objekto; jei norite turėti tokį patį rezultatą kaip: JSON.stringify(obj) :

 function objToString (obj) { var tabjson=[]; for (var p in obj) { if (obj.hasOwnProperty(p)) { tabjson.push('"'+p +'"'+ ':' + obj[p]); } } tabjson.push() return '{'+tabjson.join(',')+'}'; } 
4
29 июля '13 в 16:17 2013-07-29 16:17 atsakymą pateikė Abdennour TOUMI liepos 29 d. 13 d. 16:17 val. 2013-07-29 16:17

stringify-object yra gera npm biblioteka, sukurta stringify-object komandos: https://www.npmjs.com/package/stringify-object

 npm install stringify-object 

tada:

 const stringifyObject = require('stringify-object'); stringifyObject(myCircularObject); 

Akivaizdu, kad tai įdomu tik tuo atveju, jei turite apskrito objekto, kuris nepavyks su JSON.stringify();

3
29 дек. atsakymą pateikė Nicolas Zozol 29 d. 2017-12-29 22:23 '17, 22:23 pm 2017-12-29 22:23

Jei rūpi tik stygos, objektai ir matricos:

 function objectToString (obj) { var str = ''; var i=0; for (var key in obj) { if (obj.hasOwnProperty(key)) { if(typeof obj[key] == 'object') { if(obj[key] instanceof Array) { str+= key + ' : [ '; for(var j=0;j<obj[key].length;j++) { if(typeof obj[key][j]=='object') { str += '{' + objectToString(obj[key][j]) + (j > 0 ? ',' : '') + '}'; } else { str += '\'' + obj[key][j] + '\'' + (j > 0 ? ',' : ''); //non objects would be represented as strings } } str+= ']' + (i > 0 ? ',' : '') } else { str += key + ' : { ' + objectToString(obj[key]) + '} ' + (i > 0 ? ',' : ''); } } else { str +=key + ':\'' + obj[key] + '\'' + (i > 0 ? ',' : ''); } i++; } } return str; } 
3
11 окт. Atsakymą pateikė Anuraag Vaidya spalio 11 d. 2015-10-11 15:28 '15 15:28 2015-10-11 15:28

Pažvelkite į „ jQuery-JSON“ papildinį

Jo pagrinde jis naudoja JSON.stringify, bet grįžta į savo analizatorių, jei naršyklė ją neįgyvendina.

3
01 мая '12 в 20:08 2012-05-01 20:08 atsakymą pateikė Evan Plaice 01 gegužės 12 d. 20:08 2012-05-01 20:08
 var o = {a:1, b:2}; o.toString=function(){ return 'a='+this.a+', b='+this.b; }; console.log(o); console.log('Item: ' + o); 

Kadangi „Javascript v1.0“ veikia visur (net IE) yra patentuotas požiūris ir leidžia derinti ir gaminti labai kainuojančią objekto išvaizdą https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/ Objektas / įjungimas

Naudingas pavyzdys

 var Ship=function(n,x,y){ this.name = n; this.x = x; this.y = y; }; Ship.prototype.toString=function(){ return '"'+this.name+'" located at: x:'+this.x+' y:'+this.y; }; alert([new Ship('Star Destroyer', 50.001, 53.201), new Ship('Millennium Falcon', 123.987, 287.543), new Ship('TIE fighter', 83.060, 102.523)].join('\n'));//now they can battle! //"Star Destroyer" located at: x:50.001 y:53.201 //"Millennium Falcon" located at: x:123.987 y:287.543 //"TIE fighter" located at: x:83.06 y:102.523 

Be to, kaip premiją

 function ISO8601Date(){ return this.getFullYear()+'-'+(this.getMonth()+1)+'-'+this.getDate(); } var d=new Date(); d.toString=ISO8601Date;//demonstrates altering native object behaviour alert(d); //IE6 Fri Jul 29 04:21:26 UTC+1200 2016 //FF Fri Jul 29 2016 04:21:26 GMT+1200 (New Zealand Standard Time) //d.toString=ISO8601Date; 2016-7-29 
2
28 июля '16 в 19:55 2016-07-28 19:55 atsakymas pateikiamas Alex liepos 28 d., 16 val. 19:55 2016-07-28 19:55
  function getAsText(obj, inc_ident, show_types, ident) { var res = ""; if (!ident) ident = ""; if (typeof(obj) == "string") { res += "\"" + obj + "\" "; res += (show_types == true) ? "" : ""; } else if (typeof(obj) == "number" || typeof(obj) == "boolean") { res += obj; res += (show_types == true) ? "" : ""; } else if (obj instanceof Array) { res += "[ "; res += show_types ? "" : ""; res += "\r\n"; var new_ident = ident + inc_ident; var arr = []; for(var key in obj) { arr.push(new_ident + getAsText(obj[key], inc_ident, show_types, new_ident)); } res += arr.join(",\r\n") + "\r\n"; res += ident + "]"; } else { var new_ident = ident + inc_ident; res += "{ "; res += (show_types == true) ? "" : ""; res += "\r\n"; var arr = []; for(var key in obj) { arr.push(new_ident + '"' + key + "\" : " + getAsText(obj[key], inc_ident, show_types, new_ident)); } res += arr.join(",\r\n") + "\r\n"; res += ident + "}\r\n"; } return res; }; 

naudojimo pavyzdys:

 var obj = { str : "hello", arr : ["1", "2", "3", 4], b : true, vobj : { str : "hello2" } } var ForReading = 1, ForWriting = 2; var fso = new ActiveXObject("Scripting.FileSystemObject") f1 = fso.OpenTextFile("your_object1.txt", ForWriting, true) f1.Write(getAsText(obj, "\t")); f1.Close(); f2 = fso.OpenTextFile("your_object2.txt", ForWriting, true) f2.Write(getAsText(obj, "\t", true)); f2.Close(); 

your_object1.txt:

 { "str" : "hello" , "arr" : [ "1" , "2" , "3" , 4 ], "b" : true, "vobj" : { "str" : "hello2" } } 

your_object2.txt:

 {  "str" : "hello" , "arr" : [  "1" , "2" , "3" , 4 ], "b" : true, "vobj" : {  "str" : "hello2"  } } 
1
18 сент. Atsakymas pateikiamas 18 kg sėklų. 2014-09-18 08:02 '14 at 8:02 2014-09-18 08:02

Ne įdėtiems objektams:

 Object.entries(o).map(x=>x.join(":")).join("\r\n") 
1
20 авг. Alex Szücs atsakymas rugpjūčio 20 d 2018-08-20 18:50 '18 18:50 2018-08-20 18:50

Pavyzdžiui, manau, kad console.log("Item:",o) būtų lengviausia. Tačiau, console.log("Item:" + o.toString) taip pat veiks.

Naudojant pirmąjį metodą, konsolėje naudojamas gražus išskleidžiamajame meniu, todėl ilgas objektas veiks gražiai.

1
14 сент. atsakymas suteiktas Fuzzyzilla 14 sept. 2015-09-14 01:11 '15 at 1:11 am 2015-09-14 01:11

Jei naudojate „Dojo javascript“ sistemą, tai jau yra sukurta ši funkcija: dojo.toJson (), kuris bus naudojamas taip.

 var obj = { name: 'myObj' }; dojo.toJson(obj); 

kuri grąžins eilutę. Jei norite konvertuoti objektą į „Json“ duomenis, pridėkite antrąjį parametrą tiesa.

 dojo.toJson(obj, true); 

http://dojotoolkit.org/reference-guide/dojo/toJson.html#dojo-tojson

1
22 сент. Chris O'Connell atsakymas rugsėjo 22 d 2011-09-22 00:15 '11 prie 0:15 2011-09-22 00:15

Jei nenaudojate „Aplay“ objekto ().

 const obj = {one:1, two:2, three:3}; let arr = []; for(let p in obj) arr.push(obj[p]); const str = arr.join(','); 
0
22 марта '18 в 19:23 2018-03-22 19:23 atsakymas pateikiamas Ilja Indigo kovo 22 d. 18 val. 1923-23-22 19:23

Man reikėjo sukurti daugiau tinkintos JSON.stringify versijos, kaip turėčiau pridėti komentarus ir žinoti JSON kelią:

mazgas util.inspect() veiks: 

 > util.inspect(o) '{ a: 1, b: { c: 2 } }' 
0
12 окт. atsakymas duotas kwarnke spalis 12 2017-10-12 18:32 '17 at 18:32 2017-10-12 18:32
 function objToString (obj) { var str = '{'; if(typeof obj=='object') { for (var p in obj) { if (obj.hasOwnProperty(p)) { str += p + ':' + objToString (obj[p]) + ','; } } } else { if(typeof obj=='string') { return '"'+obj+'"'; } else { return obj+''; } } return str.substring(0,str.length-1)+"}"; } 
0
29 февр. Atsakymas pateikiamas Mauro vasario 29 d 2016-02-29 05:39 '16 at 5:39 2016-02-29 05:39

Tikiuosi, kad šis pavyzdys padės visiems tiems, kurie dirba su įvairiais objektais

 var data_array = [{ "id": "0", "store": "ABC" },{ "id":"1", "store":"XYZ" }]; console.log(String(data_array[1]["id"]+data_array[1]["store"])); 
0
10 июня '16 в 13:11 2016-06-10 13:11 Atsakymą pateikė Khushal Chheda birželio 10 d. 16 d. 1:11 2016-06-10 13:11
 setobjToString:function(obj){ var me =this; obj=obj[0]; var tabjson=[]; for (var p in obj) { if (obj.hasOwnProperty(p)) { if (obj[p] instanceof Array){ tabjson.push('"'+p +'"'+ ':' + me.setobjToString(obj[p])); }else{ tabjson.push('"'+p +'"'+':"'+obj[p]+'"'); } } } tabjson.push() return '{'+tabjson.join(',')+'}'; } 
-1
23 апр. Atsakymą pateikė Jimmy Anthony Bazan Solis 23 d. 2015-04-23 17:45 '15, 17:45 pm 2015-04-23 17:45

Kiti klausimai apie „ žymi arba „ Klauskite klausimą“