0

我有这个问题,我不知道这是否可能。所以我得到这个json数据

{
  "data": {
    "student_score": {
      "time_elapsed": 10,
      "right_moves": 20,
      "wrong_moves": 10,
      "score": 166
    },
    "average_score": {
      "time_elapsed": 10,
      "right_moves": 20,
      "wrong_moves": 10,
      "score": 166
    },
    "total_student_count": 1
  },
  "status": "success",
  "time": 1379066567
}

我能够觊觎这些类的两个类对象..

 public class StudentAssignementScoreClassForCompAssn : ViewModelBase
{
    private int _time_elapsed;
    private int _right_moves;
    private int _wrong_moves;
    private int _score;

    public int time_elasped
    {
        get
        {
            return _time_elapsed;
        }
        set
        {
            _time_elapsed = value;
            RaisePropertyChanged("time_elapsed");
        }
    }
    public int right_moves
    {
        get
        {
            return _right_moves;
        }
        set
        {
            _right_moves = value;
            RaisePropertyChanged("right_moves");
        }
    }
    public int wrong_moves
    {
        get
        {
            return _wrong_moves;
        }
        set
        {
            _wrong_moves = value;
            RaisePropertyChanged("wrong_moves");
        }
    }
    public int score
    {
        get
        {
            return _score;
        }
        set
        {
            _score = value;
            RaisePropertyChanged("score");
        }
    }
}

第二类与它相同..但名称不同..所以我的问题是这个..json数据的结构是可变的,如数据字段可能或多或少..所以有什么方法可以自动创建类这些数据,并且可以绑定这个类的所有字段(自动:))..意味着数据填充和绑定不依赖于json如何来的视图(我将有单独的文件来获取json格式的详细信息)。 .我认为您遇到了我的问题..任何类型的帮助,如想法或使用 json(任何东西)的不同方式都值得赞赏..抱歉我的英语不好:(

4

2 回答 2

1

看这个。http://jsonclassgenerator.codeplex.com/SourceControl/latest

另请参阅此 SO 答案:将 JSON 反序列化为 C# 动态对象?

结果有很多:

搜索?q=动态+创建+c%23+class+from+json

于 2013-09-13T12:37:44.387 回答
0

您需要再创建 2 个类

public class YourClass
{
    public DataClass data {get;set;}
    public string status {get;set;}
    public long time {get;set;}
}

public class DataClass
{
    public StudentAssignementScoreClassForCompAssn  student_score {get;set;}
    public StudentAssignementScoreClassForCompAssn  average_score {get;set;}
    public int total_student_count {get;set;}
}

然后使用Newtonsoft.Json进行转换

JsonConvert.DeserializeObject<YourClass>(inputString)
于 2013-09-13T12:40:08.937 回答