Tôi có một số dữ liệu JSON mà trông như thế này:Phân tích thông qua JSON trong JSON.NET với tên thuộc tính không rõ
{
"response":{
"_token":"StringValue",
"code":"OK",
"user":{
"userid":"2630944",
"firstname":"John",
"lastname":"Doe",
"reference":"999999999",
"guid":"StringValue",
"domainid":"99999",
"username":"jdoe",
"email":"[email protected]",
"passwordquestion":"",
"flags":"0",
"lastlogindate":"2013-02-05T17:54:06.31Z",
"creationdate":"2011-04-15T14:40:07.22Z",
"version":"3753",
"data":{
"aliasname":{
"$value":"John Doe"
},
"smsaddress":{
"$value":"[email protected]"
},
"blti":{
"hideemail":"false",
"hidefullname":"false"
},
"notify":{
"grades":{
"$value":"0"
},
"messages":{
"$value":"1"
}
},
"beta_component_courseplanexpress_1":{
"$value":"true"
}
}
}
}
Tôi đang sử dụng C# với JSON.NET để phân tích qua các dữ liệu. Tôi đã có thể nhận dữ liệu thành công bằng thuật toán này:
User MyUser = new User();
JToken data = JObject.Parse(json);
MyUser.FirstName = (string) data.SelectToken("response.user.firstname");
//The same for all the other properties.
Vấn đề là với trường data
. Trường này dựa trên sở thích người dùng chủ yếu và dữ liệu chỉ được chèn vào khi nó được sử dụng. Các trường là tất cả các tùy chỉnh và các nhà phát triển có thể đưa vào bao nhiêu tùy thích mà không bị hạn chế. Về cơ bản, đó là tất cả dữ liệu biểu mẫu tự do. Cũng như bạn nhận thấy họ có thể được lồng nhau thực sự xa với dữ liệu.
tôi đã cố gắng để chạy:
MyUser.Data = JsonConvert.DeserializeObject<List<JToken>>((string) data.SelectToken("response.user.data");
mà không hoạt động.
Bạn sẽ chuyển đổi nó như thế nào để sử dụng trong đối tượng C#?
@KenKin Hiện tại tôi đang xem từ điển để lưu trữ dữ liệu. Các biến thành viên khác là các thuộc tính chuỗi đơn giản giúp dễ dàng truy cập qua MyUser.FirstName. Câu hỏi thực sự tập trung vào phần 'dữ liệu' của JSON, phần còn lại hoàn toàn là để tham khảo. – claydiffrient