Convert JSON rows (objects) to CSV
Converts an array of JSON objects to CSV text. The columns are the union of all keys. Returns text/csv.
Request
POSThttps://data-tools.p.apihiver.com/v1/json-to-csv
JSON object. Required: rows.
Request Body
Edit the values below to test different scenarios.
Parameters and body structure are inherited from this endpoint's definition. Changes here only apply to this test run.
Language
Client
1curl --request POST \
2 --url https://data-tools.p.apihiver.com/v1/json-to-csv \
3 --header 'Accept: application/json' \
4 --header 'Content-Type: application/json' \
5 --header 'X-API-Key: YOUR_API_KEY' \
6 --data '{
7 "rows": [
8 {
9 "age": 30,
10 "name": "Asha"
11 }
12 ]
13}'Convert JSON rows (objects) to CSV: Data Tools API reference
Converts an array of JSON objects to CSV text. The columns are the union of all keys. Returns `text/csv`. This endpoint is part of the Data Tools API: Convert CSV ⇄ JSON, generate realistic fake test data (including Indian names and addresses), and create UUIDs in bulk.
Convert JSON rows (objects) to CSV: example requests in every language
POST /v1/json-to-csv in Shell (cURL)
curl --request POST \
--url https://data-tools.p.apihiver.com/v1/json-to-csv \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{
"rows": [
{
"age": 30,
"name": "Asha"
}
]
}'POST /v1/json-to-csv in Shell (HTTPie)
echo '{
"rows": [
{
"age": 30,
"name": "Asha"
}
]
}' | \
http POST https://data-tools.p.apihiver.com/v1/json-to-csv \
Accept:application/json \
Content-Type:application/json \
X-API-Key:YOUR_API_KEYPOST /v1/json-to-csv in Shell (Wget)
wget --quiet \
--method POST \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--body-data '{\n "rows": [\n {\n "age": 30,\n "name": "Asha"\n }\n ]\n}' \
--output-document \
- https://data-tools.p.apihiver.com/v1/json-to-csvPOST /v1/json-to-csv in Node.js (http)
const http = require('https');
const options = {
method: 'POST',
hostname: 'data-tools.p.apihiver.com',
port: null,
path: '/v1/json-to-csv',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({rows: [{age: 30, name: 'Asha'}]}));
req.end();POST /v1/json-to-csv in Node.js (Request)
const request = require('request');
const options = {
method: 'POST',
url: 'https://data-tools.p.apihiver.com/v1/json-to-csv',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: {rows: [{age: 30, name: 'Asha'}]},
json: true
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});POST /v1/json-to-csv in Node.js (Unirest)
const unirest = require('unirest');
const req = unirest('POST', 'https://data-tools.p.apihiver.com/v1/json-to-csv');
req.headers({
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
});
req.type('json');
req.send({
rows: [
{
age: 30,
name: 'Asha'
}
]
});
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});POST /v1/json-to-csv in Node.js (Axios)
const axios = require('axios').default;
const options = {
method: 'POST',
url: 'https://data-tools.p.apihiver.com/v1/json-to-csv',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
data: {rows: [{age: 30, name: 'Asha'}]}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/json-to-csv in Node.js (Fetch)
const fetch = require('node-fetch');
const url = 'https://data-tools.p.apihiver.com/v1/json-to-csv';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: '{"rows":[{"age":30,"name":"Asha"}]}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/json-to-csv in JavaScript (XMLHttpRequest)
const data = JSON.stringify({
rows: [
{
age: 30,
name: 'Asha'
}
]
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener('readystatechange', function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open('POST', 'https://data-tools.p.apihiver.com/v1/json-to-csv');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Accept', 'application/json');
xhr.setRequestHeader('X-API-Key', 'YOUR_API_KEY');
xhr.send(data);POST /v1/json-to-csv in JavaScript (Axios)
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://data-tools.p.apihiver.com/v1/json-to-csv',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
data: {rows: [{age: 30, name: 'Asha'}]}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/json-to-csv in JavaScript (Fetch)
const url = 'https://data-tools.p.apihiver.com/v1/json-to-csv';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: '{"rows":[{"age":30,"name":"Asha"}]}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/json-to-csv in JavaScript (jQuery)
const settings = {
async: true,
crossDomain: true,
url: 'https://data-tools.p.apihiver.com/v1/json-to-csv',
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
processData: false,
data: '{\n "rows": [\n {\n "age": 30,\n "name": "Asha"\n }\n ]\n}'
};
$.ajax(settings).done(function (response) {
console.log(response);
});POST /v1/json-to-csv in Python (http.client)
import http.client
conn = http.client.HTTPSConnection("data-tools.p.apihiver.com")
payload = "{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}"
headers = {
'Content-Type': "application/json",
'Accept': "application/json",
'X-API-Key': "YOUR_API_KEY"
}
conn.request("POST", "/v1/json-to-csv", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))POST /v1/json-to-csv in Python (Requests)
import requests
url = "https://data-tools.p.apihiver.com/v1/json-to-csv"
payload = { "rows": [
{
"age": 30,
"name": "Asha"
}
] }
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "YOUR_API_KEY"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())POST /v1/json-to-csv in PHP (cURL)
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data-tools.p.apihiver.com/v1/json-to-csv",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'rows' => [
[
'age' => 30,
'name' => 'Asha'
]
]
]),
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: application/json",
"X-API-Key: YOUR_API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}POST /v1/json-to-csv in PHP (Guzzle)
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://data-tools.p.apihiver.com/v1/json-to-csv', [
'body' => '{
"rows": [
{
"age": 30,
"name": "Asha"
}
]
}',
'headers' => [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY',
],
]);
echo $response->getBody();POST /v1/json-to-csv in PHP (PECL HTTP v1)
<?php
$request = new HttpRequest();
$request->setUrl('https://data-tools.p.apihiver.com/v1/json-to-csv');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders([
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY'
]);
$request->setContentType('application/json');
$request->setBody(json_encode([
'rows' => [
[
'age' => 30,
'name' => 'Asha'
]
]
]));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}POST /v1/json-to-csv in PHP (PECL HTTP v2)
<?php
$client = new http\Client;
$request = new http\Client\Request;
$body = new http\Message\Body;
$body->append(json_encode([
'rows' => [
[
'age' => 30,
'name' => 'Asha'
]
]
]));
$request->setRequestUrl('https://data-tools.p.apihiver.com/v1/json-to-csv');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setHeaders([
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY'
]);
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();POST /v1/json-to-csv in Java (AsyncHttp)
AsyncHttpClient client = new DefaultAsyncHttpClient();
client.prepare("POST", "https://data-tools.p.apihiver.com/v1/json-to-csv")
.setHeader("Content-Type", "application/json")
.setHeader("Accept", "application/json")
.setHeader("X-API-Key", "YOUR_API_KEY")
.setBody("{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}")
.execute()
.toCompletableFuture()
.thenAccept(System.out::println)
.join();
client.close();POST /v1/json-to-csv in Java (java.net.http)
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://data-tools.p.apihiver.com/v1/json-to-csv"))
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.method("POST", HttpRequest.BodyPublishers.ofString("{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());POST /v1/json-to-csv in Java (OkHttp)
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}");
Request request = new Request.Builder()
.url("https://data-tools.p.apihiver.com/v1/json-to-csv")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();POST /v1/json-to-csv in Java (Unirest)
HttpResponse<String> response = Unirest.post("https://data-tools.p.apihiver.com/v1/json-to-csv")
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.body("{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}")
.asString();POST /v1/json-to-csv in C# (HttpClient)
using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://data-tools.p.apihiver.com/v1/json-to-csv"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "YOUR_API_KEY" },
},
Content = new StringContent("{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}POST /v1/json-to-csv in C# (RestSharp)
var client = new RestClient("https://data-tools.p.apihiver.com/v1/json-to-csv");
var request = new RestRequest("", Method.Post);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Accept", "application/json");
request.AddHeader("X-API-Key", "YOUR_API_KEY");
request.AddParameter("application/json", "{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}", ParameterType.RequestBody);
var response = client.Execute(request);POST /v1/json-to-csv in Go (NewRequest)
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://data-tools.p.apihiver.com/v1/json-to-csv"
payload := strings.NewReader("{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}POST /v1/json-to-csv in Ruby (net::http)
require 'uri'
require 'net/http'
url = URI("https://data-tools.p.apihiver.com/v1/json-to-csv")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["Accept"] = 'application/json'
request["X-API-Key"] = 'YOUR_API_KEY'
request.body = "{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyPOST /v1/json-to-csv in Swift (NSURLSession)
import Foundation
let headers = [
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "YOUR_API_KEY"
]
let parameters = ["rows": [
[
"age": 30,
"name": "Asha"
]
]] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://data-tools.p.apihiver.com/v1/json-to-csv")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()POST /v1/json-to-csv in Objective-C (NSURLSession)
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"Content-Type": @"application/json",
@"Accept": @"application/json",
@"X-API-Key": @"YOUR_API_KEY" };
NSDictionary *parameters = @{ @"rows": @[ @{ @"age": @30, @"name": @"Asha" } ] };
NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://data-tools.p.apihiver.com/v1/json-to-csv"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];POST /v1/json-to-csv in Kotlin (OkHttp)
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}")
val request = Request.Builder()
.url("https://data-tools.p.apihiver.com/v1/json-to-csv")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "YOUR_API_KEY")
.build()
val response = client.newCall(request).execute()POST /v1/json-to-csv in C (libcurl)
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://data-tools.p.apihiver.com/v1/json-to-csv");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "X-API-Key: YOUR_API_KEY");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}");
CURLcode ret = curl_easy_perform(hnd);POST /v1/json-to-csv in Clojure (clj-http)
(require '[clj-http.client :as client])
(client/post "https://data-tools.p.apihiver.com/v1/json-to-csv" {:headers {:X-API-Key "YOUR_API_KEY"}
:content-type :json
:form-params {:rows [{:age 30
:name "Asha"}]}
:accept :json})POST /v1/json-to-csv in OCaml (CoHTTP)
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "https://data-tools.p.apihiver.com/v1/json-to-csv" in
let headers = Header.add_list (Header.init ()) [
("Content-Type", "application/json");
("Accept", "application/json");
("X-API-Key", "YOUR_API_KEY");
] in
let body = Cohttp_lwt_body.of_string "{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}" in
Client.call ~headers ~body `POST uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)POST /v1/json-to-csv in R (httr)
library(httr)
url <- "https://data-tools.p.apihiver.com/v1/json-to-csv"
payload <- "{\n \"rows\": [\n {\n \"age\": 30,\n \"name\": \"Asha\"\n }\n ]\n}"
encode <- "json"
response <- VERB("POST", url, body = payload, add_headers('X-API-Key' = 'YOUR_API_KEY'), content_type("application/json"), accept("application/json"), encode = encode)
content(response, "text")POST /v1/json-to-csv in PowerShell (Invoke-WebRequest)
$headers=@{}
$headers.Add("Content-Type", "application/json")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "YOUR_API_KEY")
$response = Invoke-WebRequest -Uri 'https://data-tools.p.apihiver.com/v1/json-to-csv' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"rows": [
{
"age": 30,
"name": "Asha"
}
]
}'POST /v1/json-to-csv in PowerShell (Invoke-RestMethod)
$headers=@{}
$headers.Add("Content-Type", "application/json")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "YOUR_API_KEY")
$response = Invoke-RestMethod -Uri 'https://data-tools.p.apihiver.com/v1/json-to-csv' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"rows": [
{
"age": 30,
"name": "Asha"
}
]
}'POST /v1/json-to-csv in HTTP (HTTP/1.1)
POST /v1/json-to-csv HTTP/1.1
Content-Type: application/json
Accept: application/json
X-Api-Key: YOUR_API_KEY
Host: data-tools.p.apihiver.com
Content-Length: 69
{
"rows": [
{
"age": 30,
"name": "Asha"
}
]
}Example response (200, text/csv)
The CSV text.
Errors
- 400 — A required parameter is missing or a value has the wrong format.
1{ 2 "error": { 3 "code": "INVALID_INPUT", 4 "message": "rows: Field required" 5 } 6}
Gateway errors (missing key, no subscription, rate limits) are listed in Error codes.