2014-01-30 58 views
0

我需要在json請求中發送json字符串,並在後端傳遞它作爲對象解組。即JSon請求具有一個字符串屬性,可以稍後將其轉換爲對象。這是什麼格式?我試過{"name":"bob","address":{"state":"ny","city":"newport"}}。我不想"address" : {...}這裏unmarshalled ..我希望它被髮送,因爲它是作爲一個字符串後端。如何在json請求中發送json字符串?

FWIW,我使用傑克遜,我不認爲這應該重要。

而且,我不想逃避字符,即 "address":{\"state\":\"ny\",\"city\":\"newport\"}

+0

你嘗試'jsonencode''json'字符串來看看發生了什麼? – Floris

+4

你爲什麼想這麼做? – SLaks

+0

這不適用? {「name」:「bob」,「address」:「{'state':'ny','city':'newport'}」} – iuristona

回答

0

我不會嘗試手動編碼JSON的自己,用適當的Json編碼器,用於你使用任何語言。

{"name":"bob","address":{"state":"ny","city":"newport"}}是無效的json。整個字符串應該被引用。像:

"{\"name\":\"bob\",\"address\":{\"state\":\"ny\",\"city\":\"newport\"}}"

,它會到達後端爲字符串。那是什麼JSON字符串,一個字符串。

您需要將其服務器端用適當的JSON解碼器解碼

如果你不想逃避引號,然後使用單引號和雙引號的組合,如:

'{"name":"bob","address":{"state":"ny","city":"newport"}}'

+0

是的,我嘗試過這種事實,但無論出於何種原因,我不能使用轉義字符,有沒有其他方法,而不是使用轉義字符。謝謝!如果我沒有得到任何其他答案,我將這個標記爲正確的答案,因爲這是正確的,但米的要求是一點點不同。 – th201101

+0

只按照建議包裹在單個quoutes中 – andrew

+0

沒有任何單引號只是說起不正確的json。發送成爲{「name」:「bob」,「address」:{「state」:「ny」,「city」:「newport」}}最終將編組地址視爲後端可用的地圖做一個關鍵的州和城市。顯然,傑克遜只是將未知對象轉換爲地圖。在編組類中,我有地址屬性作爲對象(也可以選擇它作爲地圖)。謝謝! – th201101

0

使用PHP :

<?php 
$a = json_encode(array("state"=>"NY", "city"=> "Newport")); 
$b = array("name"=>bob, "address"=>$a); 
print_r($a); 
print "\n"; 
print_r(json_encode($b)); 
print "\n"; 
?> 

輸出

{"state":"NY","city":"Newport"} 
{"name":"bob","address":"{\"state\":\"NY\",\"city\":\"Newport\"}"} 

最後一行是你的答案 - 但是讓代碼爲你做它總是可取的。