Tôi mới sử dụng các đối tượng C# và json và tôi đang cố di chuyển trang web của mình từ tệp cấu hình dựa trên xml sang tệp json. Có cách nào để tải trong một tập tin .json để nó biến thành đối tượng? Tôi đã tìm kiếm trên web và tôi không thể tìm thấy một trang web. Tôi đã có tệp xml được chuyển đổi và lưu dưới dạng .json. Tôi không muốn sử dụng thư viện của bên thứ ba.Đang tải tập tin .json vào chương trình C#
Trả lời
Bạn thực sự nên sử dụng một thư viện thành lập, chẳng hạn như Newtonsoft.Json (mà thậm chí Microsoft sử dụng cho các khuôn khổ như MVC và WebAPI), hoặc NET tích hợp trong JavascriptSerializer.
Dưới đây là một ví dụ của việc đọc JSON sử dụng Newtonsoft.Json:
JObject o1 = JObject.Parse(File.ReadAllText(@"c:\videogames.json"));
// read JSON directly from a file
using (StreamReader file = File.OpenText(@"c:\videogames.json"))
using (JsonTextReader reader = new JsonTextReader(file))
{
JObject o2 = (JObject) JToken.ReadFrom(reader);
}
Vâng ... obviuosly OP không nên * viết của riêng mình *. Nhưng nếu anh ta muốn một lớp khung công tác thực hiện chức năng này, ['JavaScriptSerializer'] (http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx) sẽ hoạt động. –
Tôi đã tải xuống NewtonSoft nhưng không muốn ai đó la mắng tôi vì sử dụng thư viện bên ngoài –
@inquisitiveIdiot Tôi hiểu lầm và nghĩ rằng bạn định viết thư của riêng mình. Việc xây dựng trong JavascriptSerializer là phong nha cho hầu hết các trường hợp sử dụng, nhưng Newtonsoft là rất nhanh và đầy đủ tính năng. – STW
Xem Microsofts JavaScriptSerializer
Lớp JavaScriptSerializer được sử dụng trong nội bộ bằng cách không đồng bộ lớp thông tin liên lạc để serialize và deserialize dữ liệu mà là được chuyển giữa trình duyệt và máy chủ Web. Bạn không thể truy cập vào phiên bản của trình nối tiếp. Tuy nhiên, lớp này hiển thị API công khai. Vì vậy, bạn có thể sử dụng lớp khi bạn muốn làm việc với JavaScript Ký hiệu đối tượng (JSON) trong mã được quản lý.
Namespace: System.Web.Script.Serialization
hội: System.Web.Extensions (trong System.Web.Extensions.dll)
JSON (trái với niềm tin phổ biến) * không * một tập hợp con của Javascript, xem ví dụ https://medium.com/joys-of-javascript/json-js-42a28471221d – Nubok
Như đã đề cập trong câu trả lời khác Tôi sẽ khuyên bạn nên sử dụng json.NET. Bạn có thể tải xuống gói bằng NuGet. Sau đó, để deserialize các tập tin json của bạn vào các đối tượng C# bạn có thể làm một cái gì đó như;
JsonSerializer serializer = new JsonSerializer();
MyObject obj = serializer.Deserialize<MyObject>(File.ReadAllText(@".\path\to\json\config\file.json");
Đoạn mã trên giả định rằng bạn có một cái gì đó giống như
public class MyObject
{
public string prop1 { get; set; };
public string prop2 { get; set; };
}
Và json bạn trông như thế;
{
"prop1":"value1",
"prop2":"value2"
}
Tôi thích sử dụng phương pháp deserialize chung hơn sẽ deserialize json vào đối tượng giả định rằng bạn cung cấp cho nó loại có định nghĩa phù hợp với json's. Nếu có sự khác biệt giữa hai nó có thể ném, hoặc không đặt giá trị, hoặc chỉ bỏ qua những thứ trong json, phụ thuộc vào vấn đề là gì. Nếu định nghĩa json khớp chính xác với định nghĩa kiểu C# thì nó chỉ hoạt động.
thiếu dấu đóng) trên dòng thứ hai. – redwards510
Một cách tốt để serialize json vào C# là dưới đây:
RootObject ro = new RootObject();
try
{
StreamReader sr = new StreamReader(FileLoc);
string jsonString = sr.ReadToEnd();
JavaScriptSerializer ser = new JavaScriptSerializer();
ro = ser.Deserialize<RootObject>(jsonString);
}
bạn cần phải thêm một tham chiếu đến system.web.extensions trong .net 4.0 này là trong các tập tin chương trình (x86)> cụm tài liệu tham khảo> framework> system.web.extensions.dll và bạn cần chắc chắn rằng bạn đang sử dụng chỉ 4.0 khung công tác không phải 4.0 thường xuyên của khách hàng
đừng quên sr.Close(); – user3704628
Sử dụng máy chủ.MapPath để có được những đường dẫn thực tế của tập tin JSON và tải và đọc các tập tin sử dụng StreamReader
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
public class RootObject
{
public string url_short { get; set; }
public string url_long { get; set; }
public int type { get; set; }
}
public class Program
{
static public void Main()
{
using (StreamReader r = new StreamReader(Server.MapPath("~/test.json")))
{
string json = r.ReadToEnd();
List<RootObject> ro = JsonConvert.DeserializeObject<List<RootObject>>(json);
}
Console.WriteLine(ro[0].url_short);
}
}
Lưu ý: Xem bên dưới liên kết cũng tôi đã trả lời cho câu hỏi tương tự như this.It sẽ được giúp đỡ đầy đủ cho bạn How to Parse an example string in C#
Import System.IO. Mã của bạn không xây dựng. – thang
- 1. python, viết Json vào tập tin
- 2. Nodejs viết json vào một tập tin
- 3. Django tải json địa phương tập tin
- 4. Đang tải các tập tin với ClassLoader
- 5. Viết TẤT CẢ chương trình đầu ra vào một tập tin txt trong C++
- 6. C# - Lưu một DataGridView vào tập tin và tải
- 7. Đang tải JSON bằng PHP
- 8. Đang tải một tập tin hình ảnh Image.FromFile VS FileStream
- 9. Tải tập tin từ xa vào grails
- 10. Việc triển khai chương trình nào là dễ nhất để nhúng vào chương trình C/C++?
- 11. Đang tải các tệp * .so vào Websphere
- 12. Thay đổi hình nền với một tập tin thực thi, vào chương trình đóng. Khả thi?
- 13. Nhập hàm C++ vào chương trình Python
- 14. .csproj File - Thêm/xóa các tập tin theo chương trình
- 15. C++ bao gồm trình duyệt tập tin
- 16. C/C++ Hình ảnh Đang tải
- 17. dữ liệu Nối vào một tập tin .json với PHP
- 18. Đang tải đối tượng JSON vào Dữ liệu Ember, ví dụ: Nhúng JSON vào trang đang tải và điền vào cửa hàng
- 19. chương trình dòng lệnh để thụt PHP tập tin
- 20. ASP.Net Tải tập tin xuống trình duyệt của khách hàng
- 21. C# ODP.NET tải tập tin hoặc lắp ráp
- 22. Đang tải tệp csv vào jQuery?
- 23. Nhúng dữ liệu vào chương trình C++
- 24. Mongoimport của tập tin json
- 25. Thêm "đang sử dụng" vào tập tin ASPX hoặc ASCX
- 26. tải json vào biến
- 27. Hiện có một trie vào một tập tin - C
- 28. Đang tải app.config vào AppDomain
- 29. Nhúng chương trình Powerpoint vào ứng dụng C#
- 30. Chương trình quản lý các tệp bản địa hóa json?
Có thể trùng lặp? Xem http://stackoverflow.com/questions/4521239/deserializing-json-using-c-sharp – SolarBear
'Tôi đã tìm kiếm trên web và tôi không thể tìm thấy một thứ khó tin ... – I4V
đủ công bằng, tôi đã tìm thấy một số công cụ tương tự này nhưng tôi đã thử các giải pháp của họ và nó không hoạt động. Thực hiện một số tiến trình ngay bây giờ –