簡體   English   中英

將 JS object 轉換為 JSON 字符串

[英]Convert JS object to JSON string

如果我在 JS 中定義了一個 object:

var j={"name":"binchen"};

如何將 object 轉換為 JSON? output 字符串應為:

'{"name":"binchen"}'

所有當前的瀏覽器都內置了原生 JSON 支持。所以只要你不處理像 IE6/7 這樣的史前瀏覽器,你就可以像這樣輕松地做到這一點:

 var j = { "name": "binchen" }; console.log(JSON.stringify(j));

使用 json2.js 中的JSON.stringify JSON.stringify()或大多數現代瀏覽器中的原生。

 JSON.stringify(value, replacer, space) value any JavaScript value, usually an object or array. replacer an optional parameter that determines how object values are stringified for objects. It can be a function or an array of strings. space an optional parameter that specifies the indentation of nested structures. If it is omitted, the text will be packed without extra whitespace. If it is a number, it will specify the number of spaces to indent at each level. If it is a string (such as "\t" or " "), it contains the characters used to indent at each level.

查看 Thomas Frank 的更新/更好的方法:

2008 年 5 月 17 日更新:向 toObject 方法添加了小型消毒劑。 現在 toObject() 如果在其中發現任何惡意代碼,將不會 eval() 字符串。為了更高的安全性:不要將 includeFunctions 標志設置為 true。

JSON 概念之父 Douglas Crockford 為 JavaScript 編寫了第一個字符串化器。 后來,Trim Path 的 Steve Yen 寫了一個很好的改進版本,我已經使用了一段時間。 這是我對史蒂夫版本的更改,我想與您分享。 基本上,它們源於我制作字符串化器的願望:

  • 處理和恢復循環引用
  • 包括函數/方法的 JavaScript 代碼(作為選項)
  • 如果需要,從 Object.prototype 中排除對象成員。

您可以使用JSON.stringify()方法將 JSON 對象轉換為字符串。

var j={"name":"binchen"};
JSON.stringify(j)

對於反向過程,您可以使用JSON.parse()方法將 JSON 字符串轉換為 JSON 對象。

JSON.stringify(j, null, 4)會給你美化JSON,以防你也需要美化

第二個參數是replacer。 它可以用作過濾器,您可以在字符串化時過濾掉某些鍵值。 如果設置為 null 它將返回所有鍵值對

在 AngularJS 中

angular.toJson(obj, pretty);

obj:要序列化為 JSON 的輸入。

漂亮(可選):
如果設置為 true,則 JSON 輸出將包含換行符和空格。 如果設置為整數,則 JSON 輸出將包含每個縮進的那么多空格。

(默認值:2)

如果你使用 AngularJS,'json' 過濾器應該這樣做:

<span>{{someObject | json}}</span>

JSON.stringify將 Javascript 對象轉換為 JSON 文本並將該 JSON 文本存儲在字符串中。

轉換是一個對象到字符串

JSON.parse將一串 JSON 文本轉換為 Javascript 對象。

轉換是字符串到對象

var j={"name":"binchen"};

使其成為可以使用以下 JSON 字符串。

JSON.stringify({"key":"value"});

JSON.stringify({"name":"binchen"});

有關更多信息,您可以參考下面的此鏈接。

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

我遇到了 stringify 內存不足的問題,其他解決方案似乎不起作用(至少我無法讓它們工作),這是我偶然發現這個線程的時候。 感謝Rohit Kumar ,我只是遍歷了我非常大的 JSON 對象以阻止它崩潰

var j = MyObject;
var myObjectStringify = "{\"MyObject\":[";
var last = j.length
var count = 0;
for (x in j) {
    MyObjectStringify += JSON.stringify(j[x]);
    count++;
    if (count < last)
        MyObjectStringify += ",";
}
MyObjectStringify += "]}";

MyObjectStringify 會給你你的字符串表示(就像在這個線程中提到的其他時間一樣),除非你有一個大對象,這也應該工作 -只要確保你構建它以滿足你的需要- 我需要它有一個名稱而不是數組

為此定義了一個自定義,直到我們從 stringify 方法中做奇怪的事情

var j={"name":"binchen","class":"awesome"};
var dq='"';
var json="{";
var last=Object.keys(j).length;
var count=0;
for(x in j)
{
json += dq+x+dq+":"+dq+j[x]+dq;
count++;
if(count<last)
   json +=",";
}
json+="}";
document.write(json);

輸出

{"name":"binchen","class":"awesome"}

直播http://jsfiddle.net/mailmerohit5/y78zum6v/

沃金...易於使用

$("form").submit(function(evt){
  evt.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvert = JSON.stringify(formData);  // Convert to json
});

謝謝

您可以像這樣使用本機字符串化功能

 const j={ "name": "binchen" } /** convert json to string */ const jsonString = JSON.stringify(j) console.log(jsonString) // {"name":"binchen"}

如果您想以字符串格式獲取 json 屬性值,請使用以下方式

var i = {"x":1}

var j = JSON.stringify(i.x);

var k = JSON.stringify(i);

console.log(j);

"1"

console.log(k);

'{"x":1}'

對於 Node JS 中的調試,您可以使用util.inspect() 它更適用於循環引用。

var util = require('util');
var j = {name: "binchen"};
console.log(util.inspect(j));

現有的 JSON 替換對我來說太多了,所以我編寫了自己的函數。 這似乎可行,但我可能錯過了幾個邊緣情況(在我的項目中沒有發生)。 並且可能不適用於任何預先存在的對象,僅適用於自制數據。

function simpleJSONstringify (obj) {
    var prop, str, val,
        isArray = obj instanceof Array;

    if (typeof obj !== "object")
        return false;

    str = isArray ? "[" : "{";

    function quote (str) {
        if (typeof str !== "string")
            str = str.toString ();

        // When the actual variable was a number, it was returning a number between quotation marks
        // return str.match(/^\".*\"$/) ? str : '"' + str.replace(/"/g, '\\"') + '"';

        // Now, we are verifing if is a number and, if it is, we remove the quotation marks
        str = str.match (/^\".*\"$/) ? str : '"' + str.replace (/"/g, '\\"') + '"';

        if (isNaN (str.replace (/^["]/, '').replace (/["]$/, '')))
            return str;
        else
            return str.replace (/^["]/, '').replace (/["]$/, '');
    }

    for (prop in obj) {
        if (!isArray) {
            // quote property
            str += quote (prop) + ": ";
        }

        // quote value
        val = obj [prop];
        str += typeof val === "object" ? simpleJSONstringify (val) : quote (val);
        str += ", ";
    }

    // Remove last colon, close bracket
    str = str.substr (0, str.length - 2) + ( isArray ? "]" : "}" );

    return str;
}

只需使用JSON.stringify進行此類轉換 - 但請記住,具有undefined值的字段不會包含在 json 中

 var j={"name":"binchen", "remember":undefined, "age": null }; var s=JSON.stringify(j); console.log(s);

該字段remember從輸出 json 中“消失”

So in order to convert a js object to JSON String: 

將對象轉換為字符串的簡單語法是

JSON.stringify(value)

完整的語法是: JSON.stringify(value[, replacer[, space]])

讓我們看一些簡單的例子。 請注意,整個字符串都有雙引號,如果需要,字符串中的所有數據都會被轉義。

JSON.stringify("foo bar"); // ""foo bar""
JSON.stringify(["foo", "bar"]); // "["foo","bar"]"
JSON.stringify({}); // '{}'
JSON.stringify({'foo':true, 'baz':false}); /* " 
{"foo":true,"baz":false}" */



const obj = { "property1":"value1", "property2":"value2"};
const JSON_response = JSON.stringify(obj);
console.log(JSON_response);/*"{ "property1":"value1", 
"property2":"value2"}"*/

在React中:

var data={"name":"kimp"};
JSON.stringify(data)

您可以使用 JSON.stringify() 方法將 JSON 對象轉換為字符串。

var j={"name":"hello world"};
JSON.stringify(j);

要將此字符串轉換回 json 對象,您可以使用 JSON.parse() 方法。

使用JSON.stringify(param1, param2, param3);

什么是: -

param1 --> 要轉換為 JSON 的值

param2 --> 以您自己的方式進行字符串化的函數。 或者,它用作最終 JSON 中需要包含哪些對象的白名單。

param3 --> 一種數字數據類型,表示要添加的空格數。 允許的最大值為 10。

轉換 str => obj

const onePlusStr = '[{"brand":"oneplus"},{"model":"7T"}]';

常量 onePLusObj = JSON.parse(onePlusStr);

轉換 obj => str

常量 onePLusObjToStr = JSON.stringify(onePlusStr);

JS中JSON解析的參考:
JSON.parse() :點擊
JSON.stringify() :點擊

使用字符串化函數

var j = {
"name":"binchen"
};

var j_json = JSON.stringify(j);

console.log("j in json object format :", j_json);

使用JSON.stringify()方法:

const stringified = JSON.stringify({})  // pass object you want to convert in string format

最流行的方式如下:

 var obj = {name: "Martin", age: 30, country: "United States"}; // Converting JS object to JSON string var json = JSON.stringify(obj); console.log(json);

只需使用 JSON.stringify(your_variableName) 它會將您的 JSON 對象轉換為字符串,如果您想將字符串轉換為對象,請使用 JSON.parse(your_variableName)

使用原生 function JSON.stringify()

let userJson = {
name : 'Richard'
}
let userJsonString = JSON.stringify(userJson)

用這個,

var j={"name":"binchen"};
 var myJSON = JSON.stringify(j);

非常易於使用的方法,但不要在發布時使用它(因為可能存在兼容性問題)。

非常適合在您身邊進行測試。

Object.prototype.toSource()

//Usage:
obj.toSource();

您可以使用 JSON.stringify() 來執行此操作

如果您正在尋找帶有語法高亮顯示的JS到JSON在線轉換工具。

Javascript轉JSON工具

如果你有一個 json 字符串並且它沒有用 [] 包裹,那么先把它包裹起來

var str = '{"city": "Tampa", "state": "Florida"}, {"city": "Charlotte", "state": "North Carolina"}';
str = '[' + str + ']';
var jsonobj = $.parseJSON(str);

或者

var jsonobj = eval('(' + str + ')');
console.log(jsonobj);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM