Chuyển đổi định dạng JSON sang định dạng CSV cho MS Excel [đóng]


75

Tôi đã nhận được một tệp JSON nhưng không biết cách đọc nó. Có công cụ chuyển đổi nào mà tôi có thể tạo tệp CSV đẹp để có thể tải vào MS Excel không? Tôi không hiểu JSON, vì vậy sẽ thật tuyệt nếu ai đó viết một tập lệnh hoặc liên kết tôi với một tập lệnh sẽ thực hiện công việc.

Tôi đã tìm thấy một cái gì đó gần gũi tại http://json.bloople.net nhưng, thật không may, đó là JSON thành HTML.

Chỉnh sửa: jsonformat.com thậm chí còn gần hơn, tuy nhiên nó vẫn không phải là CSV.


có một lý do. CSV không phải là hierachical / structured / wellformed, JSON / HTML / XML thì không. bạn chỉ muốn nhận được một chuỗi lớn? (không quan tâm đến việc đặt hàng)?
RPM1984

6
Tôi chỉ cần thứ gì đó có thể đọc được trên định dạng bảng, tôi nghĩ sử dụng CSV là cách đúng đắn vì tôi chỉ có thể mở nó trên Excel và bắt đầu chỉnh sửa dữ liệu.
stockoverflow

1
cần lưu ý rằng không phải tất cả JSON đều có thể được chuyển đổi thành CSV một cách đáng tin cậy. Tuy nhiên, đây là một số ví dụ về JSON không thể: json.org/example.html Có vẻ như cấu trúc của JSON bạn đang làm tương đối đơn giản.
Amanda

json-csv.com chuyển đổi JSON thành CSV trực tuyến
Stack Man

Câu trả lời:


69

Tôi không chắc bạn đang làm gì, nhưng điều này sẽ chuyển từ JSON sang CSV bằng JavaScript. Điều này đang sử dụng thư viện JSON mã nguồn mở , vì vậy chỉ cần tải xuống JSON.js vào cùng thư mục mà bạn đã lưu mã bên dưới và nó sẽ phân tích cú pháp giá trị JSON tĩnh trong json3CSV và nhắc bạn tải xuống / mở trong Excel.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>JSON to CSV</title>
    <script src="scripts/json.js" type="text/javascript"></script>
    <script type="text/javascript">
    var json3 = { "d": "[{\"Id\":1,\"UserName\":\"Sam Smith\"},{\"Id\":2,\"UserName\":\"Fred Frankly\"},{\"Id\":1,\"UserName\":\"Zachary Zupers\"}]" }

    DownloadJSON2CSV(json3.d);

    function DownloadJSON2CSV(objArray)
    {
        var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

        var str = '';

        for (var i = 0; i < array.length; i++) {
            var line = '';

            for (var index in array[i]) {
                line += array[i][index] + ',';
            }

            // Here is an example where you would wrap the values in double quotes
            // for (var index in array[i]) {
            //    line += '"' + array[i][index] + '",';
            // }

            line.slice(0,line.Length-1); 

            str += line + '\r\n';
        }
        window.open( "data:text/csv;charset=utf-8," + escape(str))
    }

    </script>

</head>
<body>
    <h1>This page does nothing....</h1>
</body>
</html>

1
Xin lỗi, tôi không thực sự là một lập trình viên ở đây ... làm cách nào để 'sử dụng' cái này?
stockoverflow

1
Xin lỗi ... làm ơn cho tôi ... tôi dán mã này vào chương trình nào? Nó có phải nằm trong cùng một thư mục với các tệp JSON không?
stockoverflow

1
Đây là javascript, bạn chỉ có thể dán nó vào một trang web và sử dụng nó để chuyển đổi JSON thành CSV ... Nếu bạn muốn nó lưu thành một tệp, bạn có thể thay thế "return str;" với "window.open (" data: text / csv; charset = utf-8, "+ Escape (str);".
Zachary

Đoạn mã trên dường như không xử lý được trường hợp giá trị json có "," trong đó. ví dụ: "Sam, Smith". Có lẽ ai đó có thể xác nhận điều này.
Michael Z

1
Có lẽ hợp lý khi sử dụng thư viện CSV javascript như agnes.codeplex.com hoặc code.google.com/p/jquery-csv hơn là cuộn tập lệnh viết CSV của riêng bạn.
mooreds

63

Tôi đã tạo một JsFiddle ở đây dựa trên câu trả lời do Zachary đưa ra . Nó cung cấp một giao diện người dùng dễ tiếp cận hơn và cũng thoát khỏi dấu ngoặc kép trong chuỗi đúng cách.


1
Tôi đã phân nhánh nó để hỗ trợ các cặp khóa-giá trị bị thiếu jsfiddle.net/gonzif/MfJPF/1 Đối tượng JSON đầu tiên của bạn được sử dụng để xác định các khóa cột.
Gon Zifroni

2
đó là những điều thú vị, nhưng không hỗ trợ mảng json. vì vậy nó không xử lý được [{"Id": 1, "UserName": "Sam Smith", "Details": {"hair": "red", "eyes": "red"}}]
Bụi bặm vào

1
Ngoài ra, khi tôi nhấp vào tải xuống thì bắt đầu tải xuống với tên tệp "tải xuống" nên không có phần mở rộng của tệp. Vì vậy, bạn vui lòng cho tôi biết cách tôi có thể đổi tên tệp.
Jewel vào

Nó không làm việc cho tôi
Luffydude

Khi nhấp vào tải xuống trong fiddle, nó không tải xuống với phần mở rộng thích hợp (.csv). Bạn có thể vui lòng giúp đỡ về thay đổi nào cần được thực hiện không?
coderpc

1

Bạn có thể sử dụng ý chính đó, khá dễ sử dụng, lưu trữ cài đặt của bạn trong bộ nhớ cục bộ: https://gist.github.com/4533361


Tôi không hiểu bạn muốn tôi nhập gì vào các hộp "tiêu đề", "trích xuất mục" hoặc "Chuyển đổi mục", cũng như những gì bạn muốn tôi thay đổi trong mã nguồn.
Noumenon

1

Sử dụng Python sẽ là một cách dễ dàng để đạt được những gì bạn muốn.

Tôi đã tìm thấy một cái bằng Google.

" chuyển đổi từ json sang csv bằng cách sử dụng python " là một ví dụ.


1
Tôi chưa bao giờ sử dụng Python trước đây, tôi chỉ biết rằng nó là ngôn ngữ lập trình, có lựa chọn thay thế nào không?
dòng dự trữ

Bạn đã đề cập trước đó rằng bạn có thể chuyển đổi JSON sang HTML. Excel có thể mở HTML. Bạn đã thử chưa?
Henrik

Bài viết EE sau đây dựa trên Perl, nhưng có thể cung cấp cho bạn một vài ý tưởng, vì nó sẽ hiển thị một cách dễ dàng tệp JSON dưới dạng Lưới dựa trên Dojo hoặc chuyển đổi nó thành XLS hoặc XLSX. Ngoài ra còn có một giải pháp dựa trên Java json2excel vv có sẵn trên sourceforge.
arober
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.