API应返回带有数组类型包装的IEnum



我想转换我的API返回结果

{ "type": "animal" , "age": 3 } 

进入

{ "myAnimal": [ "type": "cat", "age": 3 ] }

我试着做

var myAnimal = JsonConvert.SerializeObject(new { MyAnimal = originalResult });

并返回

然而,API返回类型设置为<IEnumerable<AnimalModel>,而变量myAnimalJsonConvert之后的字符串类型。所以这是一场冲突。

我仍然想归还IEnum,有什么可以让我做的吗?

提前谢谢!

您想要的json无效。但是,如果您想将对象转换为数组IMHO,最简单的方法是解析原始结果

var origAnimal = new { type = "animal", age = 3 };
var newAnimal = new JObject();
newAnimal["myAnimal"] = new JArray(JObject.FromObject(origAnimal).Properties()
.Select(jo => new JObject(jo)));
var json = newAnimal.ToString();

有效的json

{
"myAnimal": [
{
"type": "animal"
},
{
"age": 3
}
]
}

或者你可能需要这个json

var newAnimal = new JObject();

newAnimal["myAnimal"] = new JArray( JObject.FromObject(origAnimal));
var json = newAnimal.ToString();

json

{
"myAnimal": [
{
"type": "animal",
"age": 3
}
]
}

或者您已经访问了API,您将不得不将输入参数更改为JObject。在这种情况下,您不需要解析

public IActionResult MyApi(JObject  myAnimal)
{
var newAnimal = new JObject();
newAnimal["myAnimal"] = new JArray(myAnimal.Properties().Select(jo => new JObject(jo)));
...
}

最新更新