是否有可能像字符串一样将json包装在json字段中?

时间:2014-08-29 14:46:09

标签: json

我有一个像这样的json:

json1:

{  
    "field1": 111111,
    "field2": "someValue"
}

如何将其包装在" requestBody"字段变成json2就像一个字符串?

json2:

{  
    "requestBody": json1  
}

这样的事情:

{  
    "requestBody": "{"field1": 111111,"field2": "someValue"}"
}

5 个答案:

答案 0 :(得分:8)

JSON编码的东西只是一个字符串。如果你想嵌入json-in-json,那么" inner" json必须编码成json本身。

e.g。

$inner = {"foo":"bar"}
$outer = {"container":"{\"foo\":\"bar\"}"}

现在内在的json不再是json了。它只是一个碰巧有点/有点像JSON的字符串。

答案 1 :(得分:3)

正如Marc B所说,内部引号必须被转义。

{"requestBody":"{\"field1\":111111,\"field2\":\"someValue\"}"}

小提琴:

http://jsfiddle.net/cheoc1zj/

答案 2 :(得分:1)

它不会很漂亮,但是如果你对base 64编码JSON有效负载,你可以确定它不会被意外解析。

如何使用Javascript进行base64编码: http://www.webtoolkit.info/javascript-base64.html

{  
    "requestBody": "eyJmaWVsZDEiOiAxMTExMTEsImZpZWxkMiI6ICJzb21lVmFsdWUifQ=="
}

答案 3 :(得分:0)

类似这样的内容(删除内部JSON周围的引号):

{  
    "requestBody": {"field1": 111111,"field2": "someValue"}
}

答案 4 :(得分:-1)

转义双引号字符串很难看。为什么不在嵌入式JSON中使用单引号字符串?例如:

{
    "container":"{'foo':'bar'}"
}