Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Json对象转换为实体_C#_Json - Fatal编程技术网

C# 将Json对象转换为实体

C# 将Json对象转换为实体,c#,json,C#,Json,我想看看您关于如何在C#中构建实体以适应此Json的一些建议 { "activities-heart": [ { "dateTime": "2016-10-25", "value": { "customHeartRateZones": [], "heartRateZones": [ { "max": 88, "min": 30, "nam

我想看看您关于如何在C#中构建实体以适应此Json的一些建议

{  
"activities-heart": [
    {
      "dateTime": "2016-10-25",
      "value": {
        "customHeartRateZones": [],
        "heartRateZones": [
          {
            "max": 88,
            "min": 30,
            "name": "Out of Range"
          },
          {
            "max": 123,
            "min": 88,
            "name": "Fat Burn"
          },
          {
            "max": 150,
            "min": 123,
            "name": "Cardio"
          },
          {
            "max": 220,
            "min": 150,
            "name": "Peak"
          }
        ]
      }
    }
  ],
  "activities-heart-intraday": {
    "dataset": [],
    "datasetInterval": 1,
    "datasetType": "minute"
  }
}
建议:

public class HeartRateZone
{
    public int max { get; set; }
    public int min { get; set; }
    public string name { get; set; }
}

public class Value
{
    public List<object> customHeartRateZones { get; set; }
    public List<HeartRateZone> heartRateZones { get; set; }
}

public class ActivitiesHeart
{
    public string dateTime { get; set; }
    public Value value { get; set; }
}

public class ActivitiesHeartIntraday
{
    public List<object> dataset { get; set; }
    public int datasetInterval { get; set; }
    public string datasetType { get; set; }
}

public class RootObject
{
    public List<ActivitiesHeart> __invalid_name__activities-heart { get; set; }
    public ActivitiesHeartIntraday __invalid_name__activities-heart-intraday { get; set; }
}
公共类HeartRateZone
{
公共int max{get;set;}
公共int min{get;set;}
公共字符串名称{get;set;}
}
公共阶级价值
{
公共列表customHeartRateZones{get;set;}
公共列表heartRateZones{get;set;}
}
公益类活动
{
公共字符串日期时间{get;set;}
公共值{get;set;}
}
公共课堂活动
{
公共列表数据集{get;set;}
public int datasetInterval{get;set;}
公共字符串数据集类型{get;set;}
}
公共类根对象
{
公共列表\uuuu无效\u名称\uuuuu活动-heart{get;set;}
公共活动HeartIntraday\uuuu无效\u名称\uuuu活动-heart-intraday{get;set;}
}

我的问题是,它什么也不返回,它试图构建实体,但它们是空的。是否有转换器和我看不到的东西。

假设您正在使用
NewtonSoft
对json进行反序列化(并且非常确定以下内容对其他反序列化程序也是正确的),问题在于您的类

如果为您的类运行以下行,如您所述,我将在属性中获得
null

var result = JsonConvert.DeserializeObject<RootObject>(jsonString);
  • 或者更好,更改属性名称,然后按照Jim的建议使用
    JsonPropertyAttribute

    public class RootObject
    {
        [JsonProperty("activities-heart")]
        public List<ActivitiesHeart> ActivitiesHeart { get; set; }
        [JsonProperty("activities-heart-intraday")]
        public ActivitiesHeartIntraday ActivitiesHeartIntraday { get; set; }
    }
    
    公共类根对象
    {
    [JsonProperty(“活动心脏”)]
    公共列表活动心{get;set;}
    [JsonProperty(“日内活动”)]
    公共活动HeartIntraday活动HeartIntraday{get;set;}
    }
    

  • 它将立即与JsonProperty一起工作

    下面是我调用api和反序列化的方法,只要其他人需要帮助

    var apiCall = ToFullUrl("/1/user/{0}/activities/heart/date/{1}/{2}.json", encodedUserId, ToFitbitFormat(startDate), ToFitbitFormat(endDateOrPeriod));
    HttpResponseMessage response = await HttpClient.GetAsync(apiCall);
    await HandleResponse(response);string responseBody = await response.Content.ReadAsStringAsync();
    RootObject entity = JsonConvert.DeserializeObject<RootObject>(responseBody);
    
    var apiCall=ToFullUrl(“/1/user/{0}/activities/heart/date/{1}/{2}.json”),encodedUserId,ToFitbitFormat(startDate),ToFitbitFormat(endDateOrPeriod));
    HttpResponseMessage response=等待HttpClient.GetAsync(apiCall);
    等待HandlerResponse(响应);string responseBody=wait response.Content.ReadAsStringAsync();
    RootObject entity=JsonConvert.DeserializeObject(responseBody);
    
    try NewtonSoft Json dllca是否显示反序列化代码?“我的问题是,这不会返回任何内容,它会尝试构建实体,但实体为空。”何时返回任何内容?反序列化JSON的代码在哪里?如何处理
    [JsonProperty(“活动心脏”)]
    [JsonProperty(“活动心脏”)]
    public class RootObject
    {
        [JsonProperty("activities-heart")]
        public List<ActivitiesHeart> ActivitiesHeart { get; set; }
        [JsonProperty("activities-heart-intraday")]
        public ActivitiesHeartIntraday ActivitiesHeartIntraday { get; set; }
    }
    
    var apiCall = ToFullUrl("/1/user/{0}/activities/heart/date/{1}/{2}.json", encodedUserId, ToFitbitFormat(startDate), ToFitbitFormat(endDateOrPeriod));
    HttpResponseMessage response = await HttpClient.GetAsync(apiCall);
    await HandleResponse(response);string responseBody = await response.Content.ReadAsStringAsync();
    RootObject entity = JsonConvert.DeserializeObject<RootObject>(responseBody);