标签: jsonlines

使用 jq 过滤空值和/或空值

我有一个带有 jsonlines 的文件,想找到空值。

{"name": "Color TV", "price": "1200", "available": ""}
{"name": "DVD player", "price": "200", "color": null}
Run Code Online (Sandbox Code Playgroud)

并想输出空和/或空值及其键:

available: ""
color: null
Run Code Online (Sandbox Code Playgroud)

我认为它应该类似于cat myexample | jq '. | select(. == "")',但不起作用。

null json key-value jq jsonlines

5
推荐指数
3
解决办法
1万
查看次数

将 JSON 行序列 (JSONL) 转换为 JSON 数组

我有一个文件,其中每一行都是一个 JSON 对象。我想将文件转换为 JSON 数组。

该文件看起来像这样:

{"address":"email1@foo.bar.com", "topic":"Some topic."}
{"address":"email2@foo.bar.com", "topic":"Another topic."}
{"address":"email3@foo.bar.com", "topic":"Yet another topic."}
Run Code Online (Sandbox Code Playgroud)

我正在使用 bash 和 jq。

我试过

jq --slurp --raw-input 'split("\n")[:-1]' my_file
Run Code Online (Sandbox Code Playgroud)

但这只是将每一行视为一个字符串,创建一个 JSON 字符串数组。

[
  "{\"address\":\"email1@foo.bar.com\", \"topic\":\"Some topic.\"}",
  "{\"address\":\"email2@foo.bar.com\", \"topic\":\"Another topic.\"}",
  "{\"address\":\"email3@foo.bar.com\", \"topic\":\"Yet another topic.\"}"
]
Run Code Online (Sandbox Code Playgroud)

我想要:

[
  {"address":"email1@foo.bar.com", "topic":"Some topic."},
  {"address":"email2@foo.bar.com", "topic":"Another topic."},
  {"address":"email3@foo.bar.com", "topic":"Yet another topic."}
]
Run Code Online (Sandbox Code Playgroud)

bash json jq jsonlines

5
推荐指数
1
解决办法
6577
查看次数

如何在 OpenAPI 中定义 json-lines 响应?

有没有办法用 OpenAPI 描述json-lines

除了似乎还没有 MIME 类型这一事实之外,我想知道是否可以描述这样的响应。

理论上,我的响应可能是一组对象,但我收到了是否可以以 json-lines 形式传递的问题,意思是:只是对象,每行一个。

由于我使用 OpenAPI 来描述我的 API,我对如何描述此响应感到困惑。我可以简单地将响应定义为“字符串”类型,但这对于我的 API 规范的读者来说并不是很有帮助。

json mojolicious swagger jsonlines openapi

5
推荐指数
1
解决办法
762
查看次数

jq'.' 使用jq将格式化的json文件恢复为原始json格式

这是我的json:

[
 {
  "ReferringUrl": "N",
  "OpenAccess": "0",
  "ItmId": "1694738780"
 },
 {
  "ReferringUrl": "L",
  "OpenAccess": "1",
  "ItmId": "1347809133"
 }
]
Run Code Online (Sandbox Code Playgroud)

我希望它回到原始的json格式:

[{"ReferringUrl": "N","OpenAccess": "0","ItmId": "1694738780"},{"ReferringUrl": "L","OpenAccess": "1","ItmId": "1347809133"}]
Run Code Online (Sandbox Code Playgroud)

如何使用jq来做到这一点?:) 谢谢!

bash json jq jsonlines

3
推荐指数
1
解决办法
943
查看次数

如何通过简单的文件读取加载jsonlines文件

考虑有以下代码和jsonl文件,
我不使用jsonlines.open()api 读取文件是有特定原因的,所以请将此视为事实。

jsonlines 包参考: https://jsonlines.readthedocs.io/en/latest/#jsonlines.Reader

import jsonlines

with open('example.jsonl', 'r') as jsonl_f:
    content = jsonl_f.read()

with jsonlines.Reader(content) as reader:
    lst = [obj for obj in reader]
Run Code Online (Sandbox Code Playgroud)

example.jsonl内容:

{"hello": "world"}
{"covid": "19"}
Run Code Online (Sandbox Code Playgroud)

我上线时出错lst=

 lst = [obj for obj in reader]
  File "../lib/python3.7/site-packages/jsonlines/jsonlines.py", line 204, in iter
    skip_empty=skip_empty)
  File "../lib/python3.7/site-packages/jsonlines/jsonlines.py", line 164, in read
    six.raise_from(exc, orig_exc)
  File "<string>", line 3, in raise_from
jsonlines.jsonlines.InvalidLineError: line contains invalid json: Expecting property name enclosed in double quotes: …
Run Code Online (Sandbox Code Playgroud)

python json python-3.x jsonlines

3
推荐指数
1
解决办法
7241
查看次数

为什么 jsonlines 包会解析为registry.npm.taobao.org?

当我安装 npm 包jsonlines时,它被解析为镜像注册表registry.npm.taobao.org而不是registry.npmjs.org. 它仅针对 执行此操作jsonlines。这是什么原因造成的?

这是我的 package-lock.json 的差异。原始的“已解析”值是在另一个开发人员安装该包时创建的:

     "jsonlines": {
       "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz",
+      "resolved": "https://registry.npm.taobao.org/jsonlines/download/jsonlines-0.1.1.tgz",
       "integrity": "sha1-T80kbcXQ44aRkHxEqwAveC0dlMw="
     },
Run Code Online (Sandbox Code Playgroud)

我确认我配置的注册表是 npmjs.org:

$ npm config get registry
https://registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)

npm jsonlines

3
推荐指数
1
解决办法
1122
查看次数

如何使用最少的 API 从 Web API 返回分块文本/纯内容

使用用 C# 编写的 ASP.NET Core 6 Web API 和最少的 API,我想返回数据流,而无需先将数据加载到内存中。就我而言,这是由 Apache Spark 编写的 JSONL(JSON 行)数据。JSONL 是一种基于文本的格式。

下面的代码设置了这Content-Type: application/json对于我的用例来说是不正确的。设置此类型然后用数组包装整个内容,并在所有引号的地方添加转义反斜杠字符。

相反,它应该设置Content-type: text/plain保留行的原始格式,并允许该端点的使用者一次流式传输和处理一行,而无需将整个响应正文加载到客户端的内存中。

是否可以content-type在保留流的同时更改此设置Transfer-Encoding: chunked,并且不解析或修改我从 .jsonl 文件中读取的行内容?

app.MapGet("/stream/data", () =>
{
    async IAsyncEnumerable<string> Stream()
    {
        using (StreamReader file = new StreamReader(filePath))
        {
            while (!file.EndOfStream)
            {
                yield return await file.ReadLineAsync() ?? string.Empty;
            }
        }
    }

    return Stream();
});
Run Code Online (Sandbox Code Playgroud)

c# stream jsonlines asp.net-core-webapi minimal-apis

3
推荐指数
1
解决办法
1062
查看次数

读取 jsonl(json 行)文件

使用以下命令可以读取 json 文件:

library(jsonlite)
json_text <- readLines("tect.json", warn = FALSE, encoding = "UTF-8")
Run Code Online (Sandbox Code Playgroud)

解析 JSON 数据

json_data <- fromJSON(txt = paste(json_text, collapse = ""))
Run Code Online (Sandbox Code Playgroud)

tect.json 文件中的数据格式如下:

[
  {
    "id": 1,
    "name": "Apple",
    "color": "red",
    "price": 0.99
  },
  {
    "id": 2,
    "name": "Banana",
    "color": "yellow",
    "price": 0.5
  },
  {
    "id": 3,
    "name": "Orange",
    "color": "orange",
    "price": 0.75
  }
]
Run Code Online (Sandbox Code Playgroud)

但是,如果 tech.json 具有这种格式,如何将其作为 json 文件读取并将其转换为数据帧?

{"id": 1, "name": "Apple", "color": "red", "price": 0.99 }
{"id": 2, "name": "Banana", "color": "yellow", "price": 0.5 …
Run Code Online (Sandbox Code Playgroud)

r jsonlite jsonlines

3
推荐指数
1
解决办法
6379
查看次数

将逗号分隔的JSON转换为换行符分隔的节点

我有一个JSON文件,我正在读取节点,修改并将其保存为json文件.

我希望保存新的json作为换行分隔vs在数组中.

我遇到了https://github.com/CrowdProcess/newline-json,但没有完全理解流.如果我有以下流设置,我如何通过解析器和字符串管道它?

fileStream = fs.createReadStream('source.json')
writeStream = fs.createWriteStream('output.txt');

var Parser = require('newline-json').Parser;
var Stringifier = require('newline-json').Stringifier;

var parser = new Parser();
var stringifier = new Stringifier();
Run Code Online (Sandbox Code Playgroud)

但是运行以下命令只会输出一个空白文件.

fileStream.pipe(parser).pipe(stringifier).pipe(writeStream)
Run Code Online (Sandbox Code Playgroud)

我对溪流有什么看法?

json fs node.js jq jsonlines

2
推荐指数
2
解决办法
2916
查看次数

使用Python从import.io加载时出现JSON Line问题

我很难尝试将import.io中的API响应加载到文件或列表中.

我正在使用的是 https://data.import.io/extractor/{0}/json/latest?_apikey={1}

以前我的所有脚本都设置为使用普通的JSON,并且一切都运行良好,但现在嘿已经决定使用json线,但不知怎的,它似乎格格不入.

我尝试调整脚本的方法是以下列方式读取API响应:

url_call = 'https://data.import.io/extractor/{0}/json/latest?_apikey={1}'.format(extractors_row_dict['id'], auth_key)
r = requests.get(url_call)

with open(temporary_json_file_path, 'w') as outfile:
    json.dump(r.content, outfile)

data = []
with open(temporary_json_file_path) as f:
    for line in f:
        data.append(json.loads(line))
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,当我检查数据[0]时,所有的json文件内容都被转储到其中......

data[1] = IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

这是一个例子data[0][:300]:

u'{"url":"https://www.example.com/de/shop?condition[0]=new&page=1&lc=DE&l=de","result":{"extractorData":{"url":"https://www.example.com/de/shop?condition[0]=new&page=1&lc=DE&l=de","resourceId":"23455234","data":[{"group":[{"Brand":[{"text":"Brand","href":"https://www.example.com'
Run Code Online (Sandbox Code Playgroud)

有没有人对此API的响应有经验?我从其他来源做的所有其他jsonline读取工作正常,除了这一个.

根据评论编辑:

print repr(open(temporary_json_file_path).read(300))
Run Code Online (Sandbox Code Playgroud)

给出这个:

'"{\\"url\\":\\"https://www.example.com/de/shop?condition[0]=new&page=1&lc=DE&l=de\\",\\"result\\":{\\"extractorData\\":{\\"url\\":\\"https://www.example.com/de/shop?condition[0]=new&page=1&lc=DE&l=de\\",\\"resourceId\\":\\"df8de15cede2e96fce5fe7e77180e848\\",\\"data\\":[{\\"group\\":[{\\"Brand\\":[{\\"text\\":\\"Bra'
Run Code Online (Sandbox Code Playgroud)

python json import.io jsonlines

2
推荐指数
1
解决办法
101
查看次数

使用jq将json数组转换为jsonl格式

我有这样的json:

[ {"one": 1}, {"two": 2}]
Run Code Online (Sandbox Code Playgroud)

并希望将其转换为以下格式:

{"one": 1}
{"two": 2}
Run Code Online (Sandbox Code Playgroud)

以便将其索引到ElasticSearch中。(后一种称为“ jsonl”格式)。JQ是我的首选工具,但是我不知道该怎么做。谢谢

json elasticsearch jq jsonlines

2
推荐指数
2
解决办法
732
查看次数

如何操作 jsonl 对象

给定一个返回 a 的 API jsonl,我如何操作我获得的数据?

如果 API 给我这样的数据怎么办:

{"plate": "pizza", "quantity": 3}
{"plate": "pasta", "quantity": 2}
Run Code Online (Sandbox Code Playgroud)
  1. 在 javascript 中,检索到的对象将具有什么类型?
  2. 如果我想添加一个新对象,得到如下结果:
{"plate": "pizza", "quantity": 3}
{"plate": "pasta", "quantity": 2}
{"plate": "hotdog", "quantity": 7}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到维护类型.jsonl而不是创建数组?

非常感谢您的帮助

javascript json node.js jsonlines

2
推荐指数
1
解决办法
1104
查看次数

gzipped jsonlines文件在python中读写

虽然此代码读取和写入 jsonlines 文件。怎么压缩呢?我尝试直接使用gzip.open,但出现各种错误。

import json
    
def dump_jsonl(data, output_path, append=False):
    """
    Write list of objects to a JSON lines file.
    """
    mode = 'a+' if append else 'w'
    with open(output_path, mode, encoding='utf-8') as f:
        for line in data:
            json_record = json.dumps(line, ensure_ascii=False)
            f.write(json_record + '\n')
    print('Wrote {} records to {}'.format(len(data), output_path))

def load_jsonl(input_path) -> list:
    """
    Read list of objects from a JSON lines file.
    """
    data = []
    with open(input_path, 'r', encoding='utf-8') as f:
        for line in f: …
Run Code Online (Sandbox Code Playgroud)

python jsonlines

0
推荐指数
1
解决办法
1631
查看次数