---
sidebar_label: OpentsDB JSON 格式协议
title: OpentsDB JSON 格式协议
---

import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
import JavaJson from "./_java_opts_json.mdx";
import PyJson from "./_py_opts_json.mdx";
import GoJson from "./_go_opts_json.mdx";
import RustJson from "./_rust_opts_json.mdx";
import NodeJson from "./_js_opts_json.mdx";
import CsJson from "./_cs_opts_json.mdx";
import CJson from "./_c_opts_json.mdx";

## 协议介绍

OpentsDB JSON 格式协议采用一个 JSON 字符串表示一行或多行数据。例如：

```json
[
    {
        "metric": "sys.cpu.nice",
        "timestamp": 1346846400,
        "value": 18,
        "tags": {
           "host": "web01",
           "dc": "lga"
        }
    },
    {
        "metric": "sys.cpu.nice",
        "timestamp": 1346846400,
        "value": 9,
        "tags": {
           "host": "web02",
           "dc": "lga"
        }
    }
]
```

与 OpentsDB 行协议类似， metric 将作为超级表名， timestamp 表示时间戳，value 表示度量值， tags 表示标签集。


参考[OpenTSDB HTTP API文档](http://opentsdb.net/docs/build/html/api_http/put.html)。

:::note
- 对于 JSON 格式协议，TDengine 并不会自动把所有标签转成 nchar 类型， 字符串将将转为 nchar 类型， 数值将同样转换为 double 类型。
- TDengine 只接收 JSON **数组格式**的字符串，即使一行数据也需要转换成数组形式。

:::

## 示例代码

<Tabs defaultValue="java" groupId="lang">
  <TabItem label="Java" value="java">
    <JavaJson />
  </TabItem>
  <TabItem label="Python" value="Python">
    <PyJson />
  </TabItem>
  <TabItem label="Go" value="go">
    <GoJson />
  </TabItem>
  <TabItem label="Rust" value="rust">
    <RustJson />
  </TabItem>
  <TabItem label="Node.js" value="nodejs">
    <NodeJson />
  </TabItem>
  <TabItem label="C#" value="csharp">
    <CsJson />
  </TabItem>
  <TabItem label="C" value="c">
    <CJson />
  </TabItem>
</Tabs>

以上示例代码会自动创建 2 个超级表， 每个超级表有 2 条数据。

```cmd
taos> use test;
Database changed.

taos> show stables;
              name              |      created_time       | columns |  tags  |   tables    |
============================================================================================
 meters.current                 | 2022-03-29 16:05:25.193 |       2 |      2 |           1 |
 meters.voltage                 | 2022-03-29 16:05:25.200 |       2 |      2 |           1 |
Query OK, 2 row(s) in set (0.001954s)

taos> select * from `meters.current`;
           ts            |           value           |          groupid          |            location            |
===================================================================================================================
 2022-03-28 09:56:51.249 |              10.300000000 |               2.000000000 | Beijing.Chaoyang               |
 2022-03-28 09:56:51.250 |              12.600000000 |               2.000000000 | Beijing.Chaoyang               |
Query OK, 2 row(s) in set (0.004076s)
```
