gpt4 book ai didi

asp.net - JsonResult 相当于 [DataMember(Name ="Test")]

转载 作者:行者123 更新时间:2023-12-01 05:42:48 25 4
gpt4 key购买 nike

我有一个方法这样做:

public JsonResult Layar(string countryCode, string timestamp, string userId, 
string developerId, string layarName, double radius,
double lat, double lon, double accuracy)
{
LayarModel model = new LayarModel(lat, lon, radius);

return Json(model, JsonRequestBehavior.AllowGet);
}

它返回这个对象:
public class LayarModel
{
private List<HotSpot> _hotSpots = new List<HotSpot>();
public List<HotSpot> HotSpots { get { return _hotSpots; } set { _hotSpots = value; } }
public string Name { get; set; }
public int ErrorCode { get; set; }
public string ErrorString { get; set; }
}

我希望 JSON 是
{"hotspots": [{
"distance": 100,
"attribution": "The Location of the Layar Office",
"title": "The Layar Office",
"lon": 4884339,
"imageURL": http:\/\/custom.layar.nl\/layarimage.jpeg,
"line4": "1019DW Amsterdam",
"line3": "distance:%distance%",
"line2": "Rietlandpark 301",
"actions": [],
"lat": 52374544,
"type": 0,
"id": "test_1"}],
"layer": "snowy4",
"errorString": "ok",
"morePages": false,
"errorCode": 0,
"nextPageKey": null
}

一切都在返回的类中大写( HotSpots 而不是 hotspots )。

我试过 DataContract 和 DataMembers(Name="Test") 但这不起作用。有什么建议?

最佳答案

JsonResult() 在内部使用 JavaScriptSerializer 进行序列化,它似乎不支持使用属性定义序列化的属性名称。

DataContractJsonSerializer 支持这一点,所以这可能是一种方法。

一些可能有用的链接:

  • JavaScriptSerializer.Deserialize - 如何更改字段名称:JavaScriptSerializer.Deserialize - how to change field names
  • DataContractJsonSerializer 与 JavaScriptSerializer:更改字段名称:http://publicityson.blogspot.com/2010/06/datacontractjsonserializer-versus.html
  • 关于asp.net - JsonResult 相当于 [DataMember(Name ="Test")],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4269615/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com