将JSON对象转换为字符串

3

你好,我想将JSON对象转换为带有特殊字符转义的字符串。

以下是示例:

{
"xtype": "window",
"height": 250,
"width": 400,
"bodyPadding": "20 0 0 20",
"title": "Configuration",
"modal": true,
"items": [
    {
        "xtype": "textfield",
        "fieldLabel": "Deploy Path"
    },
    {
        "xtype": "textfield",
        "fieldLabel": "Save Path"
    },
    {
        "xtype": "button",
        "margin": "20 0 0 100",
        "text": "Save"
    }
]
}

以上对象到

{\n    \"xtype\": \"window\",\n    \"height\": 250,\n    \"width\": 400,\n    \"bodyPadding\": \"20 0 0 20\",\n    \"title\": \"Configuration\",\n    \"modal\": true,\n    \"items\": [\n        {\n            \"xtype\": \"textfield\",\n            \"fieldLabel\": \"Deploy Path\"\n        },\n        {\n            \"xtype\": \"textfield\",\n            \"fieldLabel\": \"Save Path\"\n        },\n        {\n            \"xtype\": \"button\",\n            \"margin\": \"20 0 0 100\",\n            \"text\": \"Save\"\n        }\n    ]\n}

请问有人可以帮我吗?

先行谢过。

你好,

我的JSON包含一些附加插件,导致stringify函数无法正常工作。例如:

plugins: [
Ext.create('Ext.grid.plugin.CellEditing', {
ptype: 'cellediting'
})
]

这里有些问题让我无法正常工作,希望有人能够在这里帮助我解决。
提前感谢您的帮助。

你尝试了什么?-> JSON.parse ??? -> https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse - GreenGuerilla
4
这不是同一个问题。OP要求转义某些字符,请停止投票关闭此问题。 - Decent Dabbler
1
另外,JSON.parse 是完全错误的,正确的应该是 stringify - Christoph
你是否正在尝试构建一个字符串字面量以放入另一个程序中? - Denys Séguret
2
再次强调,这不是重复的。学会阅读人们! - Decent Dabbler
@GreenGuerilla:JSON.parse或JSON.stringify只会将对象转换为字符串,除此之外不会有其他任何处理。在这里我需要对特殊字符进行转义处理。 - Deepak Patil
2个回答

8
我不确定你为什么想要这个。目标是构建一个字符串文字,以便在程序中编写吗?
但无论如何,似乎可以这样做:
var str = JSON.stringify(obj, null, '\n')
          .replace(/"/g, '\\"')
          .replace(/\n/g, '    ')
          .replace(/(?:[ ]{4}((?:[ ]{4})*))/g, '\\n$1');

请注意,您需要开始的不是“JSON对象”(这意味着JSON仅是一种数据交换格式),而是一个普通的JavaScript对象。

jsbin示例


1
我已经修改了解决方案,我认为它更符合 OP 的要求。希望你不介意。 - Decent Dabbler
1
@fireeyedboy 不,我真的不介意。你可能是对的(由于OP没有回应,很难确定)。 - Denys Séguret
@destroy:是的,这里的目标是在另一个程序中使用该字符串。我已经使用JSON.stringify将JSON对象转换为字符串,然后将转换后的字符串传递给replace函数。但我不确定要使用哪个正则表达式。 我会使用这个并回复。 谢谢 - Deepak Patil

0
使用 org.json 库:
这里是一个示例代码。
JSONObject jsonObj = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");

或者

var j={"name":"phonetype"};
JSON.stringify(j); // '{"name":"phonetype"}'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接