将包含JArray的JSON对象反序列化为C#对象

将包含JArray的JSON对象反序列化为C#对象,c#,json,C#,Json,我正在开发一个服务器客户端应用程序。客户机有一个线程,其主要目标是从服务器接收“房间状态” 我的问题是将JSON数据包反序列化为C#对象 public class roomState//这是我要创建的类 { public int isActive{get;set;} public int questionCount{get;set;} 公共int应答超时{get;set;} 公共JArray播放器{get;set;} } 字符串jsonObject=“{\'isActive\':,\'quest

我正在开发一个服务器客户端应用程序。客户机有一个线程,其主要目标是从服务器接收“房间状态”

我的问题是将JSON数据包反序列化为C#对象

public class roomState//这是我要创建的类
{
public int isActive{get;set;}
public int questionCount{get;set;}
公共int应答超时{get;set;}
公共JArray播放器{get;set;}
}
字符串jsonObject=“{\'isActive\':,\'questionCount\':,\'answerTimeOut\':,\'players\':[\'name1\',\'name2\',\'name3\'…]}
上面的字符串是我从服务器接收到的内容的示例。 我如何反序列化这个

*我使用的是Newtonsoft.Json.Linq,但不仅仅限于此


提前感谢您,Anthon

您可以使用
Newtonsoft.Json
来实现此目的:

public RoomState DeserializingMyRoomState()
{   
    string jsonObject = "{\"isActive\":<int>,\"questionCount\":<int>,\"answerTimeOut\":<int>,\"players\": [\"name1\",\"name2\",\"name3\"....]}";        
    RoomState myRoomState = JsonConvert.DeserializeObject<RoomState>(jsonObject);
    return myRoomState;
}

为此,您可以使用
Newtonsoft.Json

public RoomState DeserializingMyRoomState()
{   
    string jsonObject = "{\"isActive\":<int>,\"questionCount\":<int>,\"answerTimeOut\":<int>,\"players\": [\"name1\",\"name2\",\"name3\"....]}";        
    RoomState myRoomState = JsonConvert.DeserializeObject<RoomState>(jsonObject);
    return myRoomState;
}
如果不希望属性污染模型,也可以使用

public class RoomStateMap: JsonMap < RoomState > {
  public RoomStateMap() {
    this.Map(x => x.isActive, "isActive");
    this.Map(x => x.questionCount, "questionCount");
    this.Map(x => x.answerTimeOut, "answerTimeOut");
    this.Map(x => x.players, "players");
  }
}
公共类RoomStateMap:JsonMap{
公共RoomStateMap(){
this.Map(x=>x.isActive,“isActive”);
this.Map(x=>x.questionCount,“questionCount”);
this.Map(x=>x.answerTimeOut,“answerTimeOut”);
this.Map(x=>x.players,“players”);
}
}
如果不想用属性污染模型,也可以使用

public class RoomStateMap: JsonMap < RoomState > {
  public RoomStateMap() {
    this.Map(x => x.isActive, "isActive");
    this.Map(x => x.questionCount, "questionCount");
    this.Map(x => x.answerTimeOut, "answerTimeOut");
    this.Map(x => x.players, "players");
  }
}
公共类RoomStateMap:JsonMap{
公共RoomStateMap(){
this.Map(x=>x.isActive,“isActive”);
this.Map(x=>x.questionCount,“questionCount”);
this.Map(x=>x.answerTimeOut,“answerTimeOut”);
this.Map(x=>x.players,“players”);
}
}

我要补充的是,如果您想修改列表,您必须使用List而不是JArray;如果您不想修改列表,则必须使用string[],非常感谢!我确实试过,但现在我知道为什么它不起作用了!错误名称“JsonConvert”在当前上下文中不存在。我需要包括什么?(使用Newtonsoft…)只需添加:使用Newtonsoft.Json;当然,请确保您的解决方案/项目中安装了此软件包。您需要nuget Newtonsoft.Json。我要补充的是,如果您想修改列表,您必须使用List而不是JArray,如果您不想修改列表,则必须使用string[],非常感谢!我确实试过,但现在我知道为什么它不起作用了!错误名称“JsonConvert”在当前上下文中不存在。我需要包括什么?(使用Newtonsoft…)只需添加:使用Newtonsoft.Json;当然,请确保在解决方案/项目中安装了此软件包。您需要nuget Newtonsoft.Json。