如何发送正确的JSON到Sharepoint 2013



我是REST/JSON接口的新手。

我在VS 2013 c#中工作,框架是4.5。

现在我已经成功地在Sharepoint中创建了一个列表项目,使用类似于以下的JSON有效负载:

{ '__metadata': { 'type': 'SP.Data.ABCs_x0020_for_x0020_TAC_x0020_SiebelListItem' },
'Priority':'A',
'Requirements_x0020_Status':'Fully Documented',
'Status':'Under Consideration',
'Description':'This is a test',
'ABC_x0020_Type':'Enhancement',
'Title':'Testing: 921253434',
'Business_x0020_Unit_x0020_Affect':'TAC',
'AssignedToId':'1',
'Submitted_x0020_by':'sdsd',
'Applies_x0020_To':'Screens/Views',
'Screen_x002f_View_x002f_Module':'CSR'}

我正在手动创建JSON有效负载,并决定尝试一些可能有助于序列化/反序列化的对象。

代码如下:

            ABCItem item = new ABCItem();
         item.Title = "Testing " + ran.Next();
        item.ABC_x0020_Type = "Enchancement";
        item.Applies_x0020_To = "Screens/View";
        item.Priority = "A";
        item.Requirements_x0020_Status = "Fully Documented";
        item.Screen_x002f_View_x002f_Module = "CSR";
        item.Business_x0020_Unit_x0020_Affect = "TAC";
        item.Submitted_x0020_by = "Brian Hintze";
        item.Status = "Under Consideration";
        item.AssignedToId = 1;
        item.Description = "The quick brown fox jumped over the lazy dog and then drank a pint of beer.";

        string json = JsonConvert.SerializeObject(item);

不幸的是,我不能弄清楚如何获得JSON有效载荷的__metadata部分正确添加。我已经试过了

 item.__metadata = "{ 'type': 'SP.Data.ABCs_x0020_for_x0020_TAC_x0020_SiebelListItem' }";

但是没有成功。

我试着摆弄metadatsets,但到目前为止我还不能找出正确的组合。

           string json = JsonConvert.SerializeObject(item,new JsonSerializerSettings
        {
            TypeNameHandling = TypeNameHandling.All,
            // $type no longer needs to be first
            MetadataPropertyHandling = MetadataPropertyHandling.Default
        });

任何帮助都会很感激。我相信这是我所缺少的一些基本的东西。

谢谢,李

JSON序列化器将对象转换为JavaScript对象。

而不是使item.__metadata一个字符串值,尝试使其成为一个对象的成员属性称为Type等于"SP.Data.ABCs_x0020_for_x0020_TAC_x0020_SiebelListItem"。

你可能想让属性__metadata成为它自己类的引用。毕竟这是一个复杂的json对象。

使用json2csharp.com 1你可以看到你的ABCItem类应该看起来像

public class Metadata
{
    public string type { get; set; }
}
public class ABCItem
{
    public Metadata __metadata { get; set; }
    public string Priority { get; set; }
    (...)
}

相关内容

  • 没有找到相关文章

最新更新