2016-01-21 39 views
3

我是新來的c#和整個.net平臺,所以我正在努力處理很多可能很基本的東西。在我身上很容易。我現在想要做的就是返回一個json對象數組(顯然是字符串)。返回一串字符串.net c#web api

[HttpPost] 
public string[] PostJsonString([FromBody] string[] arr) 
    { 

     return arr; 

    } 

而在郵差,我送

[{"someProp":"someVal"},{ "aThing":"someOtherThing"}] 

如此痛苦簡單......從字面上只是試圖與請求體的確切內容作出迴應,但由於某種原因,我回來了空陣列。有沒有人有任何想法,爲什麼這可能是?我試着以str.toArray作爲字符串返回數組,但後來我找回了對象類型,即"System.String[]"。我只想要一個簡單的JSON響應與數組中的對象。

任何提示將不勝感激。即使它只是將我指向一個有用的資源。我已經用盡了所有相關的S/O問題,並且a)沒有看到完全解決我想要完成的任務的問題,並且b)仍嘗試了一些解決方案,但無濟於事。

+1

你的json並不代表一個字符串數組,它更像是一個字典或自定義對象。一個字符串數組可能是'[「someProp」,「someVal」,「aThing」,「someOtherThing」]' – Jonesopolis

+0

ahhh。 mkay。 @Jonesopolis,我陷入了困境。所以即使json在技術上是一個字符串(因爲http實際上並不知道對象是什麼,對嗎?),它仍然表現爲一個對象?那是對的嗎? – spb

+0

@ B.ClayShannon danke,Shannon先生。我已經看過它,但我想我只是沒有意識到JSON已經作爲通過http發送的對象。 – spb

回答

1

你的控制器將獲得單串

"[{\"someProp\":\"someVal\"},{ \"aThing\":\"someOtherThing\"}]" 

更改方法的簽名

public string PostJsonString([FromBody] string arr) 

如果你願意,我建議使用JSON.net(又名Newtonsoft.Json)與JSON陣列工作和JArray.ParseJObject.Parse

using Newtonsoft.Json 
// ... 
JArray a = JArray.Parse(json); 
+1

SUCCESS!謝了哥們。 '[HttpPost] public JArray PostJsonString([FromBody] string arr) { JArray a = JArray.Parse(arr); return a; }另外,我最初並沒有在字符串內部發送數組。我將我的請求從'[json in here]'重新格式化爲''[json in here]''。只是後人的一張便條。 ;) – spb

1
[HttpPost] 
public JsonResult PostJsonString([FromBody] string[] arr) 
{ 
    return Json(arr); 
}