어떤 SaaS 제품에 나의 일의 반은 체계에서 그리고 코드를 작성하지 않는 누군가의 손에 자료를 얻고 있다. 설립자는 스프레드시트에 있는 month's 가입을 원한다. 지원 리드는 엑셀에 있는 표를 분류하고 싶다. 회계사는 a 로 순서를 원한다 .csv 그들은 피벗할 수 있습니다. 데이터는 JSON 으로 살아갑니다. 왜냐하면 그것이 API 가 반환하는 것이고,작업이 매번 같기 때문입니다: 이 객체 배열을 인간이 열 수 있는 열과 행으로 바꾸는 것에 대한 일회용 스크립트를 작성하는 것에 지쳤는데,이것이 바로 Toolz 가 바로 그 이유입니다 JSON 에서 CSV 변환기 존재합니다. 이 가이드는 제가 그 변환에 대해 생각하는 방법입니다. 사람들을 넘어뜨리는 부분도 포함해서요.
TL;DR: JSON-CSV 변환기는 객체 배열을 가져와서 쉼표로 구분된 행으로 작성하며,속성당 하나의 열로 작성하므로 스프레드시트가 열 수 있습니다. 하드 파트는 서로 다른 필드,중첩된 객체 및 쉼표가 포함된 값이 있는 레코드입니다. 좋은 변환기는 모든 키의 합집합에서 헤더를 빌드하고 중첩된 객체를 점 표기법 열로 평평하게 만들 수 있으며 RFC 4180 당 필드를 이스케이프합니다. Toolz 도구는 세 개의 클라이언트 측을 모두 수행하며,분리기와 CRLF 줄 끝을 선택하여 파일이 Excel 에서 깔끔하게 열립니다.
나는 Laravel 과 React 를 기반으로 구축하므로 JSON 은 내 기본 형식이고 CSV 는 내가 내보내는 링구아 프랑카입니다. 흥미로운 엔지니어링은 모든 개체가 동일한 세 개의 키를 갖는 행복한 경로가 아닙니다; 그것은 생산 데이터의 지저분한 현실이며,대부분의 변환기가 조용히 잘못된 일을하는 곳입니다.
JSON-CSV 변환기란 무엇입니까?
JSON-CSV 변환기는 객체의 JSON 배열을 읽고 테이블을 생성합니다: 속성 이름은 헤더 행이되고 각 객체는 그 아래에 하나의 데이터 행이됩니다. API 엔드 포인트,데이터베이스 쿼리 또는 내보낸 문서에서 응답을 붙여 넣으면 Excel,Google Sheets 또는 Numbers 에서 직접 열 수있는 파일을 얻을 수 있습니다. 기계 교환 형식과 사람들이 실제로 작업하는 형식 사이의 다리입니다.
이상적인 입력은 모두 동일한 키를 공유하는 평평한 개체의 배열입니다. 왜냐하면 직사각형 테이블에 완벽하게 매핑되기 때문입니다. 실제 데이터는 거의 깔끔하지 않습니다. 개체가 필드를 놓치고 값이 두 레벨 깊이에 중첩되며 일부 항목은 스칼라가 아닌 배열입니다. 전용 변환기의 전체 값은 오류를 발생시키거나 데이터를 삭제하는 대신 해당 사례 각각에 대해 정의되고 합리적인 답변을 가지고 있다는 것입니다. JSON 이 축소되었거나 먼저 검사하려는 경우 다음을 통해 실행하십시오 JSON 포맷터 변환하기 전에 예쁜 인쇄를 하고 검증하세요.
다른 필드를 가진 객체를 어떻게 처리합니까?
이것은 순진한 변환기를 깨는 첫 번째 일이며,생산 JSON 은 거의 균일 한 객체를 갖지 않기 때문에 이해할 가치가 있습니다. 배열에 하나의 객체가 있다고 가정합니다 id, name, 그리고 email, 그리고 다음은 id, name, 그리고 phone. CSV 는 어떤 열을 가져야 합니까?
정답은 모든 객체에 걸쳐 모든 키의 합집합이며,각 키가 처음 나타나는 순서대로 유지됩니다. 그래서 헤더가 됩니다 id, name, email, phone그리고 그 키들 중 하나를 놓친 모든 객체는 단순히 그 열에 빈 셀을 얻습니다. 아무것도 드롭되지 않고 테이블은 직사각형으로 유지됩니다. 첫 번째 객체의 키만 읽는 게으른 변환기는 묵묵히 를 잃게 됩니다 phone 모든 전화번호를 가지고 완전히 열을 사용합니다. Toolz 변환기는 모든 행을 검색하여 헤더를 작성하므로 고르지 않은 레코드는 여전히 깨끗하고 완전한 테이블로 정렬됩니다. 이 동작은 신뢰할 수 있는 내보내기와 너무 늦을 때까지 아무도 눈치채지 못하는 데이터를 조용히 생략하는 내보내기의 차이입니다.
중첩된 객체와 배열은 어떻습니까?
JSON 은 트리입니다; CSV 는 그리드입니다. 하나를 다른 것으로 평평하게하는 것은 두 번째 장소 변환기가 분기되며 올바른 선택은 파일로 수행하려는 계획에 따라 다릅니다.
중첩된 개체의 경우 두 가지 합리적인 옵션이 있으며 도구는 두 가지 옵션을 모두 지원합니다. 평평하게 하면 중첩된 개체가 점 표기법 열로 확장됩니다 { "address": { "city": "Paris", "zip": "75001" } } 가 된다 address.city 열과 address.zip 열. 그것은 중첩된 필드가 사람이 읽고 정렬할 실제 데이터일 때 원하는 것입니다. 평평하게 하면 전체 중첩된 개체가 단일 셀 내부에 컴팩트한 JSON 문자열로 작성됩니다. 구조가 불투명하고 그대로 보존하면 더 좋습니다.
배열은 그들 자신의 선택을 얻는다,왜냐하면 하나의 셀에 리스트를 짜내는 단 하나의 올바른 방법이 없기 때문이다. 배열을 JSON 으로 저장할 수 있다,유지 ["a","b"] 온전하게 완벽하게 왕복하거나 구분 기호로 요소를 결합하여 사람이 더 쉽게 읽을 수 있도록 할 수 있습니다 a; b. 나는 파일이 프로그램에 의해 다시 읽힐 때 JSON 을 사용하고 사람이 청중이고 가독성이 승리 할 때 조인 형식을 사용합니다. 아래 표는 결정을 요약 한 것입니다.
| 입력 모양 | 납작하게 켜세요 | 납작하게 |
|---|---|---|
{"user":{"name":"Ada"}} |
열 user.name = Ada |
열 user = {"name":"Ada"} |
{"tags":["x","y"]} (JSON으로 배열) |
열 tags = ["x","y"] |
열 tags = ["x","y"] |
{"tags":["x","y"]} (배열이 합류했습니다) |
열 tags = x; y |
열 tags = x; y |
| 열쇠가 없는 물건 | 해당 열의 셀을 비웁니다 | 해당 열의 셀을 비웁니다 |
쉼표와 따옴표는 왜 이스케이프가 필요한가?
이것은 무시하면 누군가가 열을 열고 열이 모두 틀릴 때까지 괜찮아 보이는 파일을 생성하는 규칙입니다. CSV 는 쉼표를 사용하여 필드를 분리하므로 값에 쉼표가 포함되면 어떻게됩니까? 또는 큰따옴표? 또는 여러 줄 메모에서 줄 바꿈?
RFC 4180CSV가 표준에 가장 가까운 것은, 이것을 정확하게 대답합니다: 구분자, 큰따옴표, 또는 줄 바꿈을 포함하는 모든 필드는 큰따옴표로 감싸야하며, 그 필드 내부의 모든 큰따옴표는 두 배가되어야합니다 그래서 값 Baker, Smith & Co. 로 표기한다 "Baker, Smith & Co.", 그리고 She said "hi" 된다 "She said ""hi""". Toolz 변환기는 이러한 규칙을 모든 셀에 자동으로 적용합니다. 따라서 주소, 수천 구분 기호가 있는 가격 또는 자유 텍스트 주석이 추가 열로 분할되는 대신 단일 온전한 필드로 스프레드시트로의 이동 후에도 살아남습니다.
Excel 에서 파일을 깨끗하게 열려면 어떻게 해야 합니까?
CSV 가 CSV 라고 생각하겠지만,윈도우의 엑셀은 사람들을 사로잡는 한 가지에 대해 까다롭습니다: 줄 끝. 이 문제를 올바르게 해결하는 것은 완벽하게 열리는 파일과 행이 병합되거나 분할된 것처럼 보이는 파일의 차이입니다.
Windows 에서 Excel 은 각 행이 캐리지 반환과 라인 피드를 더한 CRLF 쌍으로 끝날 것으로 예상합니다. Unix 스타일 LF 라인 엔딩이 있는 파일을 건네면 행이 끊어지는 위치를 잘못 읽을 수 있습니다. 특히 인용된 필드에 자체 개행 문자가 포함되어 있는 경우 더욱 그렇습니다. 변환기를 사용하면 LF 또는 CRLF 를 선택할 수 있으므로 청중이 Windows 에서 Excel 일 때 CRLF 를 선택하고 대부분의 다른 도구와 Google Sheets 의 경우 LF 를 선택하면 둘 중 하나에 만족합니다. 구분 기호를 선택할 수도 있습니다: 쉼표는 기본값이지만 쉼표가 소수 구분 기호인 유럽 로케일에서는 세미콜론이 일반적이며 데이터 자체가 쉼표로 가득 차면 탭이나 파이프를 편리하게 사용할 수 있습니다. 구분 기호와 행이 끝나는 대상을 목적지에 일치시키는 것은 나중에 지원 티켓을 저장하는 5 초 선택입니다.
민감한 JSON 을 온라인으로 변환하는 것이 안전합니까?
예,브라우저를 떠나지 않기 때문입니다. JSON 을 구문 분석하는 것부터 각 필드를 이스케이프하는 것,행에 합류하는 것까지 변환의 모든 부분은 자체 시스템에서 JavaScript 로 실행됩니다. 업로드 및 서버가 없으므로 아무것도 전송,로그 또는 저장되지 않습니다. 네트워크 탭을 열고 변환: 요청이 나가지 않는 것을 볼 수 있으며,페이지가 로드되면 도구가 인터넷 연결이 끊긴 상태에서 작동합니다.
이것은 JSON 에 대한 사소한 세부 사항이 아닙니다 구체적으로,JSON 은 API 응답과 내부 시스템이 말하는 것이기 때문입니다. 변환하는 배열은 사용자 레코드,주문 데이터,액세스 토큰 또는 백엔드가 반환하는 모든 것을 보유 할 수 있습니다. 원격 서버에 페이로드를 보내는 변환기는 개인 응답을 다른 사람으로 바꿉니다's 로그 라인. 작업 클라이언트 측을 수행한다는 것은 데이터가 시작된 위치에 정확히 유지된다는 것을 의미합니다. Toolz.dev 의 모든 도구에 대한 기본값이며 해당 아키텍처가 중요한 이유에 대한 더 완전한 사례를 원한다면 에 배치했습니다 온라인 도구에 대한 데이터 개인 정보 보호 가이드.
이것이 실제 파이프라인의 어디에 적합합니까?
그 자체로 변환기는 한 단계이지만 일반적으로 더 긴 흐름의 마지막 홉이며,다른 도구 몇 개와 자연스럽게 짝을 이룹니다. 내 주에 가장 일반적인 왕복 여행은: API 에서 JSON 을 내보내고,편집 또는 필터링하고,CSV 로 변환하고,스프레드시트에 사는 사람에게 변경 사항을 가지고 다시 보내면,나는 다른 방향을 로 변환합니다 CSV 에서 JSON 변환기RFC 4180 에 따라 파일을 구문 분석하고 유형을 추론하여 다시 깨끗한 개체를 얻습니다. 두 도구는 서로 고의적 인 거울이므로 교차 연결됩니다.
변환하기 전에 데이터를 그리드로 보고 온전한 상태를 확인하고 싶은 경우가 많습니다 CSV 뷰어 CSV 를 정렬 가능한 테이블로 렌더링하여 내보내기가 올바른지 확인할 수 있습니다. 그리고 대상이 스프레드시트가 전혀 아니라 XML 을 말하는 다른 시스템인 경우,the XML 에서 JSON 변환기 그리고 그 대응물은 그 다리를 덮습니다. 이 모든 것이 로컬로 실행되기 때문에 단일 업로드 없이 동일한 개인 파일에 연결할 수 있습니다. 이런 종류의 데이터 논쟁을 위한 일련의 도구를 구성하는 경우 내 웹 개발자 툴킷 가이드 조립에 대해 어떻게 생각하는지 다룹니다.
자주 묻는 질문
json을 csv로 어떻게 변환합니까?
열다 JSON 에서 CSV 변환기를 입력 상자에 JSON 객체 배열을 붙여넣고 변환을 클릭합니다. 객체 키가 헤더 행이 되고 각 객체가 데이터 행이 된 다음 CSV 를 복사하거나 a 로 다운로드할 수 있습니다 .csv excel 또는 Google Sheets 에서 열 파일. 모든 처리는 브라우저에서 이루어 지므로 아무 것도 업로드되지 않습니다.
변환기는 어떤 JSON 구조를 기대합니까?
객체의 배열이 이상적이며,각 객체가 하나의 행이 됩니다. 단일 객체도 허용되며,한 행 파일이 됩니다. 객체가 아닌 값은 a 아래에 배치됩니다 value 열이므로 손실되는 것은 없으며 도구는 그런 일이 발생하면 경고합니다.
다른 필드를 가진 객체를 어떻게 처리합니까? 헤더는 모든 객체에서 발견된 모든 키의 합집합으로,각 키가 처음 나타나는 순서대로 유지됩니다. 해당 키 중 하나가 누락된 객체는 단순히 해당 열에 빈 셀을 가져오므로 고르지 않은 레코드는 여전히 데이터가 삭제되지 않은 깨끗하고 완전한 테이블을 생성합니다.
중첩된 객체와 배열은 어떻게 처리되나요?
평평하게 하면 중첩된 개체가 다음과 같은 점 표기법 열로 확장됩니다 address.city; it off 로 객체는 하나의 셀에 JSON 문자열로 작성됩니다. 배열은 JSON 으로 저장되어 정확하게 보존되거나,더 읽기 쉬운 열을 위해 구분 기호로 결합될 수 있습니다. 변환별로 선택합니다.
Excel 에 CRLF 줄 끝을 사용해야 하는 이유는 무엇입니까? Windows 의 Microsoft Excel 은 각 행의 끝에 캐리지 반환과 라인 피드를 기대합니다. CRLF 를 선택하면 파일을 열 때 행이 병합되거나 잘못 읽히지 않습니다. 대부분의 다른 도구와 Google 시트의 경우 LF 는 잘 작동합니다.
값 내부의 쉼표와 따옴표는 올바르게 이스케이프됩니까? 예. RFC 4180 에 따라 구분 기호,큰따옴표 또는 줄 바꿈이 포함된 모든 필드는 큰따옴표로 감싸고 내부 따옴표는 두 배가 됩니다. 이렇게 하면 주소,설명 및 기타 자유 텍스트가 열로 분할되는 대신 하나의 유효한 필드로 유지됩니다.
민감한 JSON 을 변환하는 것이 안전합니까? 예. 변환은 브라우저에서 전적으로 JavaScript 로 실행되며,네트워크 요청이 데이터를 전달하지 않으며,아무것도 기록되거나 저장되지 않으며,로드되면 오프라인으로 작동합니다. API 키,사용자 기록 또는 내부 식별자가 포함된 JSON 은 머신을 떠나지 않습니다.
CSV 를 다시 JSON 으로 변환할 수 있나요? 예. 그만큼 CSV 에서 JSON 변환기 프로세스를 반대로 전환하여 쉼표로 구분된 파일을 다시 유형 추론을 통해 객체의 JSON 배열로 구문 분석합니다. 라운드 트리핑을 사용하면 스프레드시트와 API 간에 데이터를 직접 다시 작성하지 않고도 데이터를 이동할 수 있습니다.



