C# 为什么REST方法返回的元素顺序在Postman和Lambda之间有所不同?
当我从Postman调用REST方法时,返回数据的元素顺序如下: IOW: 但是,当我从客户端应用程序调用REST方法时:C# 为什么REST方法返回的元素顺序在Postman和Lambda之间有所不同?,c#,json,rest,xml-serialization,postman,C#,Json,Rest,Xml Serialization,Postman,当我从Postman调用REST方法时,返回数据的元素顺序如下: IOW: 但是,当我从客户端应用程序调用REST方法时: private IEnumerable<VendorItem> GetCollectionOfVendorItems() { ArrayList arrList = FetchDataFromServer("http://localhost:21608/api/vendoritem/getall"); String contents = "&
private IEnumerable<VendorItem> GetCollectionOfVendorItems()
{
ArrayList arrList =
FetchDataFromServer("http://localhost:21608/api/vendoritem/getall");
String contents = "<VendorItems>";
foreach (String s in arrList)
{
contents += s;
}
contents += "</VendorItems>";
String unwantedPreamble = "<ArrayOfVendorItem xmlns:i=\"http://www.w3.org/2001/XMLSchema-
instance\" xmlns=\"http://schemas.datacontract.org/2004/07/CStore.DomainModels.HHS\">";
contents = contents.Replace(unwantedPreamble, String.Empty);
contents = contents.Replace("</ArrayOfVendorItem>", String.Empty);
XDocument xmlDoc = XDocument.Parse(contents);
IEnumerable<VendorItem> vendorItems = xmlDoc.Descendants("VendorItem").Select(x =>
GetVendorItemForXMLElement(x));
return vendorItems;
}
private static VendorItem GetVendorItemForXMLElement(XElement vendor)
{
return new VendorItem
{
Id = vendor.Element("Id").Value,
PackSize = Convert.ToInt32(vendor.Element("PackSize").Value),
VendorId = vendor.Element("VendorId").Value,
VendorItemID = vendor.Element("VendorItemID").Value
//VendorId = vendor.Element("VendorId").Value,
//VendorItemID = vendor.Element("VendorItemID").Value,
//Id = vendor.Element("Id").Value,
//PackSize = Convert.ToInt32(vendor.Element("PackSize").Value)
};
}
public class VendorItem
{
public string Id { get; set; }
public int PackSize { get; set; }
public string VendorId { get; set; }
public string VendorItemID { get; set; }
public String siteNum { get; set; }
//public string VendorId { get; set; }
//public string VendorItemID { get; set; }
//public string Id { get; set; }
//public int PackSize { get; set; }
//public String siteNum { get; set; }
}
即使类中成员的顺序与邮递员的报税表匹配,也没有区别;不管怎样,我先拿到身份证,等等
为什么会这样?这似乎不重要,但我错了吗
c#REST postman xml json不同的代码表现不同。获取数据的两种方法都调用相同的REST方法,它以相同的方式返回相同的数据(无论如何,人们会认为),而不管是谁调用它(它怎么知道)?@B.ClayShannon是的,但一个返回json,另一个返回xml。至少,它们使用的是不同的序列化代码。FWIW,我有ServiceStack代码可以做同样的事情。xml是按字母顺序排列的,但是json是按另一个顺序排列的,可能是反射返回属性的任何顺序。
private IEnumerable<VendorItem> GetCollectionOfVendorItems()
{
ArrayList arrList =
FetchDataFromServer("http://localhost:21608/api/vendoritem/getall");
String contents = "<VendorItems>";
foreach (String s in arrList)
{
contents += s;
}
contents += "</VendorItems>";
String unwantedPreamble = "<ArrayOfVendorItem xmlns:i=\"http://www.w3.org/2001/XMLSchema-
instance\" xmlns=\"http://schemas.datacontract.org/2004/07/CStore.DomainModels.HHS\">";
contents = contents.Replace(unwantedPreamble, String.Empty);
contents = contents.Replace("</ArrayOfVendorItem>", String.Empty);
XDocument xmlDoc = XDocument.Parse(contents);
IEnumerable<VendorItem> vendorItems = xmlDoc.Descendants("VendorItem").Select(x =>
GetVendorItemForXMLElement(x));
return vendorItems;
}
private static VendorItem GetVendorItemForXMLElement(XElement vendor)
{
return new VendorItem
{
Id = vendor.Element("Id").Value,
PackSize = Convert.ToInt32(vendor.Element("PackSize").Value),
VendorId = vendor.Element("VendorId").Value,
VendorItemID = vendor.Element("VendorItemID").Value
//VendorId = vendor.Element("VendorId").Value,
//VendorItemID = vendor.Element("VendorItemID").Value,
//Id = vendor.Element("Id").Value,
//PackSize = Convert.ToInt32(vendor.Element("PackSize").Value)
};
}
public class VendorItem
{
public string Id { get; set; }
public int PackSize { get; set; }
public string VendorId { get; set; }
public string VendorItemID { get; set; }
public String siteNum { get; set; }
//public string VendorId { get; set; }
//public string VendorItemID { get; set; }
//public string Id { get; set; }
//public int PackSize { get; set; }
//public String siteNum { get; set; }
}
Id
PackSize
VendorId
VendorItemID