使用具有对象

时间:2015-11-04 15:57:44

标签: json rest powershell serialization

我正在尝试模仿在powershell中调用webapi调用主体的c#类定义,因此我可以使用表示为json的对象调用rest方法。我想要实现的json结构的一个例子是:

'{
    "Name" : "Test" ,
    "Items" : [{"Key" : "Test", "Value" : "t2"},{"Key" : "Test2", "Value" : "t3"}]
}'

当json在postman中设置为其余调用的主体时,如果我用powershell调用powershell invokerest-method,所有字段在webapi端都是null。

这是我目前在powershell中对此进行的尝试,注意,Items实际上是一个键值对象列表。使用下面的代码,我只在项目中获得1项,其名称和值为空。

$spec = @{
    Name = 'Test' 
    Items = ,{Name = 'Test', Value = 't2'}, {Name = 'Test2', Value = 't3'}
}

invoke-restmethod $someurl  -Method:POST -body $spec | Write-Host

我很确定我在powershell对象上的项目数组声明中遗漏了一些重要内容。

以下是其他方法:

   [HttpPost]
    [Route("addorupdateitem")]
    public void Add([FromBody] ItemConfigurationDto itemconfig)
    {
        var serializeObject = Newtonsoft.Json.JsonConvert.SerializeObject(context);
        Debug.WriteLine(serializeObject);
    }

和对象

public class ItemConfigurationDto
{
    public string Name { get; set; }
    public List<Item> Items { get; set; } = new List<Item>();
}

public class Item
{
    public string Name { get; set; }
    public string Value { get; set; }
}

1 个答案:

答案 0 :(得分:2)

修正了问题。我必须设置-ContentType'application / json'并将对象转换为json,然后再将其添加到正文中。