Ví dụ:Làm cách nào để sử dụng tốt nhất Json.NET để sửa đổi các phần của đối tượng JSON hiện có?
Tôi có đối tượng JSON sau.
{"currentVersion" : "10.0",
"folders" : [],
"services" : [
{"name" : "nyc", "type" : "MapServer"},
{"name" : "philly", "type" : "MapServer"}
]
}
Tôi muốn có thể xóa một hoặc nhiều mục khỏi mảng dịch vụ dựa trên giá trị của thuộc tính name. Ví dụ, tôi muốn tìm kiếm tên = "nyc" và loại bỏ đối tượng sau khỏi mảng.
{"name" : "nyc", "type" : "MapServer"}
Kết quả cuối cùng là một đối tượng mà trông như thế này:
{"currentVersion" : "10.0",
"folders" : [],
"services" : [
{"name" : "philly", "type" : "MapServer"}
]
}
tôi đã có thể để tạo ra đối tượng JSON mới khá dễ dàng và tôi có thể đọc những cái hiện có. Tuy nhiên, tôi đang gặp khó khăn trong việc xác định cách tốt nhất để sửa đổi một đối tượng JSON hiện có. Đặc biệt là nó liên quan đến truy vấn cho các đối tượng cụ thể trong đối tượng JSON.
Một phương pháp mà tôi đã phát hiện (cụ thể cho ví dụ này) là xây dựng lại các phần của JSON mà tôi muốn sửa đổi và thay thế mã thông báo khi cần thiết. Tuy nhiên, tôi phải nghĩ rằng có một cách tốt hơn. Mã này được hiển thị bên dưới.
string json = @"{""currentVersion"" : ""10.0"",
""folders"" : [],
""services"" : [
{""name"" : ""nyc"", ""type"" : ""MapServer""},
{""name"" : ""philly"", ""type"" : ""MapServer""}
]
}";
string[] keepList = new string[] { "nyc" };
JObject o = JObject.Parse(json);
JArray services = (JArray)o["services"];
JArray newServices = new JArray();
foreach (JToken service in services)
{
foreach (string keeper in keepList)
{
if ((string)service["name"] == keeper)
{
newServices.Add(service);
break;
}
}
}
services.Replace(newServices);
string output = o.ToString();
Làm cách nào để sử dụng Json.NET để sửa đổi các phần của đối tượng JSON hiện có?