2014-08-29 50 views
3

我有這樣一個JSON:是否有可能像JSON字段中包裝JSON字段?

json1:

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

我怎樣才能把它包在 「requestBody」 字段到像一個字符串json2?

json2:

{ 
    "requestBody": json1 
} 

事情是這樣的:

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

使用'JSON.stringify' – lante 2014-08-29 14:48:59

+0

這取決於你想要完成什麼。爲什麼你想在JSON字段中使用完整的JSON對象? – 2014-08-29 14:49:30

+1

與序列化任何其他字符串相同。你試過了嗎? – aquinas 2014-08-29 14:50:11

回答

4

JSON編碼的東西只是一個字符串。如果你想嵌入json-in-json,那麼「內部」json必須被編碼成json本身。

例如

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

現在,內部的JSON不再是JSON了。這只是一個字符串,看起來像JSON。

0

這樣的事情(除去圍繞內JSON引號):

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

它不會很漂亮,但如果你base64編碼的JSON有效載荷,你可以肯定它不會被意外解析。

如何使用JavaScript來Base64編碼: http://www.webtoolkit.info/javascript-base64.html

{ 
    "requestBody": "eyJmaWVsZDEiOiAxMTExMTEsImZpZWxkMiI6ICJzb21lVmFsdWUifQ==" 
} 
2

正如馬克B中指出,內部引號必須轉義。

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

小提琴:

http://jsfiddle.net/cheoc1zj/

0

擺脫雙引號中的字符串是醜陋的。爲什麼不在嵌入式JSON中使用單引號字符串?例如:

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