JSON thành văn bản thuần túy: Loại bỏ cú pháp, giữ nguyên nội dung
Mở bản xuất JSON trong trình soạn thảo văn bản và đếm những gì thực sự ở đó. Niềng răng, dấu ngoặc vuông, dấu ngoặc kép trên mỗi khóa và mỗi giá trị chuỗi, dấu phẩy sau mỗi cặp, dấu hai chấm ở giữa, và trong một tập tin được in đẹp mắt, có hàng nghìn khoảng trắng ở đầu. Trong một đợt xuất khẩu nặng kỷ lục điển hình, phần lớn byte là các ký tự cấu trúc không mang thông tin mà bạn quan tâm.
Trang này thực hiện một điều: phải mất một .json tập tin và trả lại cho bạn thông tin con người có thể đọc được
nội dung với tất cả những thứ đó đã bị loại bỏ. Không có tiêu đề, không có bảng, không có đường dẫn — chỉ có các giá trị, theo thứ tự,
với đủ nhãn hiệu để duy trì ý nghĩa. Đó là đầu ra phù hợp khi đích đến là một
mô hình nhúng, chỉ mục tìm kiếm, tập lệnh phân tích văn bản hoặc bất kỳ đường dẫn nào có dấu câu
tiếng ồn. Miễn phí, không cần đăng ký, tối đa 50 MB, không có gì được lưu trữ.
Những gì bị loại bỏ và những gì còn tồn tại
Các quy tắc này đủ đơn giản để bạn ghi nhớ trong đầu, điều này rất quan trọng khi bạn quyết định liệu đầu ra sẽ phù hợp với đường dẫn của bạn:
- Đi rồi: mỗi
{,},[,], dấu ngoặc kép, dấu phẩy và dấu hai chấm. Ngoài ra, phần thụt đầu dòng trong một tập tin được in đẹp có thể là một một phần đáng ngạc nhiên trong tổng kích thước. - Giữ: giá trị chuỗi, số, booleans - tải trọng.
- Giữ, nhưng làm phẳng: những cái tên chủ chốt. Chúng tồn tại dưới dạng nhãn ngắn hơn là
bị xóa hoàn toàn vì
refund_reasontrước một câu là thực sự thông tin cho cả người đọc và mô hình nhúng. Những gì biến mất là con đường làm tổ chứ không phải cái tên. - Đã thu gọn:
null, chuỗi trống và mảng trống. Trong JSON thô những điều này được lặp lại trên mọi bản ghi có chúng; trong đầu ra văn bản họ ngừng chiếm không gian. - Tuyến tính hóa: độ sâu làm tổ. Một giá trị ở mức thấp nhất sáu cấp và một giá trị ở trên cùng cấp độ kết thúc như dòng anh chị em. Đó là sự trao đổi - bạn mất cây để đổi lấy cây sạch văn xuôi.
Tại sao cú pháp lại gây hại cho việc nhúng
Đây là trường hợp việc chuyển đổi không chỉ gọn gàng hơn mà còn thay đổi kết quả. Khi bạn nhúng một đoạn văn bản, mô hình sẽ mã hóa mọi thứ trong đó. Cung cấp cho nó một bản ghi JSON thô và một đoạn có ý nghĩa trong đó vector đang mô tả thực tế là nó nhìn thấy JSON - dấu ngoặc nhọn, khóa được trích dẫn, hình dạng chung của dữ liệu cấu trúc. Hai bản ghi về các chủ đề hoàn toàn khác nhau có thể ở gần nhau trong không gian vectơ bởi vì họ chia sẻ một lược đồ.
Loại bỏ cú pháp và nhúng là về nội dung. Phiếu hỗ trợ sẽ trở thành của khách hàng các từ thực tế cộng với một vài nhãn và tìm kiếm ngữ nghĩa trên đó sẽ hoạt động theo cách bạn mong đợi. Hiệu ứng này mạnh nhất đối với các bản ghi ngắn, trong đó tỷ lệ cú pháp trên nội dung kém nhất - a đối tượng năm trường có giá trị hai từ chủ yếu là dấu câu.
Logic tương tự áp dụng cho chunking. JSON thô không phù hợp với các chunk có kích thước cố định vì vùng đất bị chia cắt đối tượng ở giữa và tạo ra một đoạn dấu ngoặc đơn lẻ. Phân chia văn bản phẳng trên câu và dòng ranh giới theo cách chunker cho rằng nó sẽ như vậy.
Lập chỉ mục tìm kiếm và phân tích văn bản
Các công cụ tìm kiếm toàn văn bản mã hóa các ranh giới từ và sau đó loại bỏ dấu câu - nhưng không phải lúc nào cũng rõ ràng và không phải lúc nào cũng làm sai lệch số liệu thống kê thuật ngữ của bạn. Lập chỉ mục được tước trước văn bản cung cấp cho bạn tần suất thuật ngữ có thể dự đoán được và ngăn chặn việc lãng phí công việc của máy phân tích.
Đối với bất cứ điều gì thống kê, lập luận này mạnh mẽ hơn. Đếm tần số từ, ghi điểm tình cảm qua một xuất các bài đánh giá sản phẩm, lập mô hình chủ đề trên kết xuất phiếu hỗ trợ, trích xuất thực thể có tên từ một tập dữ liệu bị loại bỏ - tất cả những dữ liệu này bị ô nhiễm bởi các mã thông báo cấu trúc và bởi các trường mà bạn không làm muốn tính. A Trình chuyển đổi văn bản JSON sang có thể đọc được run cung cấp cho bạn một kho văn bản thay vì một cấu trúc dữ liệu
Đáng để xóa trước khi phân tích, nếu bạn có thể: dấu thời gian ISO, UUID và ID số. Họ mã hóa thành những mảnh vô nghĩa và xuất hiện trên mọi bản ghi, đó chính xác là hồ sơ của cái gì đó sẽ làm biến dạng bảng tần số.
Đối số ngân sách mã thông báo
Nếu bạn đang thực hiện xuất khẩu lớn ở một mô hình, văn bản phẳng là cách thể hiện rẻ nhất của cùng một mô hình. nội dung. Hai điều thúc đẩy tiết kiệm. Đầu tiên, các ký tự cấu trúc đi. Thứ hai - và đây là cái lớn hơn trên các tệp nặng kỷ lục - bạn ngừng trả tiền cho việc lặp lại khóa trên mọi đối tượng. A nghìn bản ghi mà mỗi tên trình bày lại tám tên trường đang mang tám nghìn nhãn dư thừa trong tập tin thô.
Bộ đếm mã thông báo nằm bên dưới đầu ra, vì vậy bạn có thể chuyển đổi và kiểm tra trước khi dán vào bất kỳ đâu. Trên các kết xuất API được rút gọn và tệp nhật ký NDJSON, sự khác biệt có xu hướng đáng kể. Điều đó nói lên rằng, nếu lý do bạn gần đạt đến giới hạn là vì tệp thực sự rất lớn, không có chuyển đổi nào giúp bạn tiết kiệm được — lọc các bản ghi bạn cần trước, sau đó chuyển đổi.
Khi văn bản phẳng là lựa chọn sai lầm
Thành thật về điều này sẽ hữu ích hơn là giả vờ chuyển đổi luôn thắng. Mô hình đọc thô JSON trôi chảy; đó là một trong những định dạng họ thấy nhiều nhất. Có ba tình huống mà bạn không nên lột nó:
- Bạn đang tạo mã dựa trên dữ liệu. Định nghĩa kiểu, trình phân tích cú pháp, ánh xạ các hàm, lược đồ xác thực - tất cả những thứ này đều cần tên khóa chính xác, cách lồng chính xác và chính xác. các loại. Dán tải trọng thô hoặc một mẫu đã được cắt bớt của nó. Làm phẳng ném đi thứ nhu cầu của mô hình.
- Làm tổ mang ý nghĩa. Nếu giá trị gốc nằm dưới giá trị nào là điểm — quyền cho mỗi vai trò, cài đặt cho mỗi môi trường, một cây danh mục - làm phẳng sẽ phá hủy câu trả lời. sử dụng JSON sang Markdown thay vào đó, nó duy trì thứ bậc dưới dạng tiêu đề và biến bản ghi thống nhất mảng thành các bảng có thể quét được.
- Một người sẽ đọc nó. Văn bản phẳng được tối ưu hóa cho máy. Đối với con người đánh giá, Markdown thắng hoàn toàn.
Chuyển đổi định dạng ở đầu trang này sẽ di chuyển giữa hai định dạng và giữ cho tệp của bạn được chọn, vì vậy việc so sánh chỉ cần một cú nhấp chuột thay vì tải lên lần thứ hai.
Các tập tin khó xử và cách chúng hoạt động
- Unicode thoát. Các tệp được viết bởi các thư viện cũ hơn mã hóa không phải ASCII dưới dạng
\u00e9hơn là bản thân nhân vật. Những giải mã này trở lại các chữ cái thực, điều này rất quan trọng nếu dữ liệu của bạn không phải là tiếng Anh. - Các đốm màu Base64. Hình ảnh nhúng, tệp PDF hoặc tệp đính kèm được nhập lậu vào trường JSON rất lớn và không chứa văn bản có thể đọc được. Loại bỏ chúng trước khi tải lên nếu không chúng sẽ thống trị cả kích thước tệp và số lượng mã thông báo của bạn.
- Đã thoát JSON bên trong JSON. Phổ biến trong tải trọng webhook và dòng nhật ký - một chuỗi trường có nội dung chính là một đối tượng được tuần tự hóa. Nó xuất hiện như một người đã trốn thoát từ lâu chuỗi. Hãy mở khóa trường đó trước nếu đó là phần bạn thực sự muốn.
- Các tập tin không đúng định dạng. Dấu phẩy ở cuối, dấu ngoặc đơn, kiểu Python
NonehoặcNaN. Những lỗi này không thể phân tích cú pháp hoàn toàn. Lint tập tin đầu tiên nếu nguồn gốc của nó không rõ ràng. - Dòng JSON. Việc xuất NDJSON hoạt động tốt ở đây - các bản ghi thống nhất, mỗi dòng một bản,
đã gần với hình dạng bạn muốn. Đổi tên thành
.jsonhoặc bọc các dòng trong một mảng trước khi tải lên.
Câu hỏi thường gặp
Làm cách nào để chuyển đổi tệp JSON thành tệp txt?
Thả .json vào bộ chuyển đổi ở trên và các giá trị trở lại dưới dạng văn bản có thể đọc được với dấu ngoặc nhọn, dấu ngoặc đơn, dấu ngoặc kép, dấu phẩy và dấu hai chấm đã được loại bỏ. Tải xuống dưới dạng .txt. Miễn phí, không cần đăng ký, 50 MB mỗi tệp, không có gì được lưu trữ sau đó.
Tại sao chuyển đổi JSON thành văn bản thay vì chỉ sử dụng JSON?
Bởi vì các ký tự cú pháp có trọng lượng vô dụng đối với bất kỳ thứ gì đọc được ý nghĩa hơn là cấu trúc. Việc nhúng các mô hình, bộ phân loại và chỉ mục toàn văn bản mã hóa mọi trích dẫn và dấu phẩy, làm loãng các vectơ và tăng chi phí mà không cần thêm thông tin. Nếu người tiêu dùng của bạn phân tích cú pháp JSON, hãy giữ lại JSON - điều này dành cho các quy trình không thực hiện được.
Nó có làm phẳng các đối tượng và mảng lồng nhau không?
Vâng. Việc lồng nhau là một thực tế về cấu trúc và cấu trúc này là thứ mà dải này tách ra, do đó, một bản ghi được lồng sâu sẽ xuất hiện dưới dạng một chuỗi các giá trị được gắn nhãn theo thứ tự tài liệu. Khóa được giữ dưới dạng nhãn để các giá trị có thể hiểu được nhưng mối quan hệ cha-con giữa chúng không được thể hiện. Cấu hình lồng nhau sâu là nơi điều này gây tổn hại nhất.
Nó có thể xử lý các dòng JSON hoặc NDJSON không?
Chỉ khi toàn bộ tệp là JSON hợp lệ. NDJSON là một đối tượng trên mỗi dòng không có mảng bao bọc, đây không phải là một tài liệu JSON đơn lẻ, vì vậy nó sẽ không phân tích thành một đối tượng. Quấn các dòng vào [ ] bằng dấu phẩy giữa chúng trước tiên - một dòng jq hoặc sed công việc — và nó chuyển đổi bình thường.
Còn xuất khẩu rất lớn thì sao?
Giới hạn là 50 MB cho mỗi tệp, chứa rất nhiều JSON - các bản xuất được in đẹp chủ yếu là khoảng trắng và cấu trúc, vì vậy nội dung có thể đọc được bên trong chỉ bằng một phần nhỏ kích thước tệp. Nếu bạn vượt qua nó, hãy lọc các bản ghi bạn cần với jq trước khi chuyển đổi thay vì chia tách tùy ý và làm mất mảng gói.
Bộ chuyển đổi liên quan
Nếu JSON của bạn thực sự là một cái bàn mặc trang phục, hãy xuất nó sang CSV và sử dụng CSV thành văn bản cung cấp một chất tẩy rửa kết quả. Đối với định dạng có cấu trúc khác có cùng vấn đề ở dạng khác, có XML thành văn bản, và để lưu trang, HTML thành văn bản. File2Txt có bất kỳ sự hỗ trợ nào định dạng nếu bạn không muốn chọn một trang.
Và nếu tệp là một trong nhiều tệp trong một dự án, việc chuyển đổi riêng nó có thể là đơn vị sai của làm việc. các bộ chuyển đổi thư mục cục bộ và GitHub sang trình chuyển đổi văn bản để bạn chọn JSON cộng với mã đọc nó trong một lần. Đối với các trang trực tiếp, Web2Txt loại bỏ trực tiếp một URL, và hướng dẫn để chuẩn bị hồ sơ cho LLM bao quát trường hợp tổng quát.
Repo2Txt được xây dựng và duy trì bởi v12hero, một nhà phát triển độc lập xây dựng các ứng dụng web và ứng dụng gốc ưu tiên quyền riêng tư.