Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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
在JSON中引用c#对象_C#_Json_Object - Fatal编程技术网

在JSON中引用c#对象

在JSON中引用c#对象,c#,json,object,C#,Json,Object,我有两个JSON文件。一个包含球员信息,另一个包含球队信息。 我用C#反序列化了团队JSON文件,并创建了一个团队对象。在player类中,有一个属性“teamassigned”,其中我希望值是我前面创建的团队对象,但我希望将其存储在JSON文件中 驱动程序的JSON { "driverName": "Esyltt Aviars", "teamAssigned": TEAM OBJECT HERE, "

我有两个JSON文件。一个包含球员信息,另一个包含球队信息。
我用C#反序列化了团队JSON文件,并创建了一个团队对象。在player类中,有一个属性“teamassigned”,其中我希望值是我前面创建的团队对象,但我希望将其存储在JSON文件中

驱动程序的JSON

{
    "driverName": "Esyltt Aviars",
    "teamAssigned": TEAM OBJECT HERE,
    "DefendingScore": 47,
    "BrakingScore": 80,
    "CorneringScore": 38,
    "RaceStartScore": 92,
    "ConsistencyScore": 74,
    "FocusScore": 55 
}
团队的JSON

{
    "teamID": 1,
    "teamName": "Mclaren",
    "teamColor": "orange"
}

您可以通过以下方式实现这一点:

您的球员和球队课程为:

public class Team  
{
     public int teamID { get; set; } 
     public string teamName { get; set; } 
     public string teamColor { get; set; }    
}    
public class Player
{
     public string driverName { get; set; } 
     public Team teamAssigned { get; set; } 
     public int DefendingScore { get; set; } 
     public int BrakingScore { get; set; } 
     public int CorneringScore { get; set; } 
     public int RaceStartScore { get; set; } 
     public int ConsistencyScore { get; set; } 
     public int FocusScore { get; set; } 
}
当反序列化这些类的数据时,生成的Json将是:

{
    "driverName": "Esyltt Aviars",
    "team": {
    "teamID": 1,
    "teamName": "Mclaren",
    "teamColor": "orange"
      },
    "DefendingScore": 47,
    "BrakingScore": 80,
    "CorneringScore": 38,
    "RaceStartScore": 92,
    "ConsistencyScore": 74,
    "FocusScore": 55 
}
根据需要更新答案

上述两个类Player和Team用于将Json数据反序列化为对象,如下所示:

var objPlayer = JsonConvert.DeserializeObject<Player>(playerJson);
var objTeam = JsonConvert.DeserializeObject<Team>(teamJson);
var objMerged = new Player()
{
    driverName = objPlayer.driverName,
    teamAssigned = new Team() 
                   { 
                     teamID = objTeam.teamID,
                     teamName = objTeam.teamName, 
                     teamColor = objTeam.teamColor 
                   },
    DefendingScore = objPlayer.DefendingScore,
    BrakingScore = objPlayer.BrakingScore,
    CorneringScore = objPlayer.CorneringScore,
    RaceStartScore = objPlayer.RaceStartScore,
    ConsistencyScore = objPlayer.ConsistencyScore,
    FocusScore = objPlayer.FocusScore,
};
现在,将此对象“objMerged”序列化为Json,如下所示:

var convertToJson = JsonConvert.SerializeObject(objMerged);

“convertToJson”中的结果Json将符合要求,属性“teamassigned”的值将作为团队对象。

如果没有办法,请您建议一些方法来存储类似这样的信息,因为我有大约12个团队和24个驱动程序。您只需使用嵌套的Json对象;让我们看看你的C#类。啊,我想我问的问题不恰当。我已经有了团队对象设置。因为有一个对象。团队对象是从一个单独的json文件反序列化的。是否要在玩家json对象中包含团队json对象,其中团队对象将分配给“teamassigned”?是的。团队json文件在播放器json之前反序列化。@KevTech如果我的答案对您有效,请将其标记为“答案并向上投票”。