我是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; }
(...)
}