Tôi có một kịch bản 'đơn giản': Đọc một số tệp JSON, Lọc hoặc thay đổi một số giá trị và viết lại kết quả mà không thay đổi định dạng gốc.C# Thao tác với dữ liệu JSON
Vì vậy, ví dụ để thay đổi điều này:
{
"type": "FeatureCollection",
"crs": {
"type": "EPSG",
"properties": {
"code": 28992
}
},
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
149886.192,
374554.705
],
[
149728.583,
374473.112
],
[
149725.476,
374478.215
]
]
]
}
}
]
}
Into này:
{
"type": "FeatureCollection",
"crs": {
"type": "EPSG",
"properties": {
"code": 28992
}
},
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates":
[
149886.192,
374554.705
]
}
}
]
}
Tôi đã thử JSON.Net bởi newtonsoft số những người khác nhưng chỉ này, tôi có thể tìm thấy là:
- đọc vào đối tượng
- write object to json
Nhưng tôi đang thiếu bước 'thay đổi đối tượng'. Bất kỳ gợi ý nào?
Cập nhật
Đây là những gì tôi đã cố gắng cho đến nay:
JToken contourManifest = JObject.Parse(input);
JToken features = contourManifest.SelectToken("features");
for (int i = 0; i < features.Count(); i++)
{
JToken geometry = features[i].SelectToken("geometry");
JToken geoType = geometry.SelectToken("type");
JToken coordinates = geometry.SelectToken("coordinates");
geoType = "Point";
}
Nhưng điều này chỉ thay đổi giá trị của biến geoType. Tôi cũng muốn thay đổi giá trị bên trong hình học. Tôi cần một tài liệu tham khảo, không phải là một bản sao! Điều này có thể không?
Cập nhật
Tôi hiện đang tắt dự án này nhưng tôi muốn đưa ra phản hồi của tôi với người trả lời. Mặc dù tôi thích sự đơn giản của Shahin, tôi thích cách tiếp cận chính thức hơn của L.B. tốt hơn một chút. Cá nhân tôi không thích sử dụng các giá trị chuỗi như mã chức năng, nhưng đó chỉ là tôi. Nếu tôi có thể chấp nhận cả hai câu trả lời: tôi sẽ. Tôi đoán Shahin phải làm gì với 'chỉ' một upvote.
Tôi chưa thực sự làm việc này, nhưng có vẻ như loại động sẽ hữu ích cho việc này. Xem ở đây: http://stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object – McGarnagle