2016-02-06 26 views
7

Tôi đã sau vấn đề: Tôi có một tệp json trông như thế nàyDeserialize JSON với json.NET vào C# động

{ 
    "Path": { 
     "FirstPath": "/1/2/text()" 
    } 
} 

Nếu tôi phân tích này JSON-File với Newtonsoft như thế này

dynamic dyn = JObject.Parse(json); 

hay này

dynamic dyn = JsonConvert.DeserializeObject(json); 

tôi nhận được một đối tượng năng động mà cần phải được sử dụng như

này
dyn.Path.FirstPath.Value 

Làm cách nào để loại bỏ nội dung Giá trị? Tất cả các đối tượng của tôi trong JSON kết thúc là một chuỗi. Tôi không muốn luôn viết ".Giá trị" ở cuối nếu không cần thiết.

Trả lời

11

Tôi đã thử nghiệm điều này bằng cách sử dụng Newtonsoft 8.0.2 và nó hoạt động tốt.

 dynamic dyn = JObject.Parse(json); 

     string value = dyn.Path.FirstPath; 

Giá trị phải bằng /1/2/text().

+0

Có nhưng nếu bạn nhìn kỹ hơn, bạn có thể thấy rằng "giá trị" không phải là một chuỗi nó là từ Loại "Newtonsoft.Json.Linq.JValue". Nếu bạn lấy "giá trị" và chuyển nó đến một phương thức mà dự kiến ​​một chuỗi bạn sẽ nhận được một ngoại lệ. Nó chỉ hoạt động nếu bạn viết "value.Value". – Shamshiel

+0

Thay thế "var" bằng "string" sau đó. Tôi đã cập nhật câu trả lời của mình. –

Các vấn đề liên quan