2016-01-21 38 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); 
}