это действительно JSON? ошибка: содержимое не разрешено в прологе - PullRequest
0 голосов
/ 03 февраля 2020

Как проверить правильность указанных ниже JSON файлов?

Используя basex в командной строке:

thufir@dur:~/json$ 
thufir@dur:~/json$ ls
formatted.json  raw.json
thufir@dur:~/json$ 
thufir@dur:~/json$ basex
BaseX 9.0.1 [Standalone]
Try 'help' to get more information.
> 
> CREATE DATABASE db raw.json
"/home/thufir/json/raw.json" (Line 1): Content is not allowed in prolog.
> 
> CREATE DATABASE db formatted.json
"/home/thufir/json/formatted.json" (Line 1): Content is not allowed in prolog.
> 
> exit
Have fun.
thufir@dur:~/json$ 

Я пропустил необработанные данные через formatter , чтобы сделать его более читабельным:

thufir@dur:~/json$ 
thufir@dur:~/json$ cat formatted.json 
{
  "1224083010015956992": {
    "metadata": {
      "result_type": "recent",
      "iso_language_code": "en"
    },
    "in_reply_to_status_id_str": null,
    "in_reply_to_status_id": null,
    "created_at": "Sun Feb 02 21:31:46 +0000 2020",
    "in_reply_to_user_id_str": null,
    "source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App<\/a>",
    "retweeted_status": {
      "metadata": {
        "result_type": "recent",
        "iso_language_code": "en"
      },
      "in_reply_to_status_id_str": null,
      "in_reply_to_status_id": null,
      "created_at": "Sun Feb 02 20:53:32 +0000 2020",
      "in_reply_to_user_id_str": null,
      "source": "<a href=\"https://about.twitter.com/products/tweetdeck\" rel=\"nofollow\">TweetDeck<\/a>",
      "retweet_count": 3,
      "retweeted": false,
      "geo": null,
      "in_reply_to_screen_name": null,
      "is_quote_status": false,
      "id_str": "1224073388706189312",
      "in_reply_to_user_id": null,
      "favorite_count": 6,
      "id": 1224073388706189312,
      "text": "Myth of the 10x programmer:\n\nh......... particularly like the list of productivity improvement \"tools\" at the end.",
      "place": null,
      "lang": "en",
      "favorited": false,
      "possibly_sensitive": false,

Учитывая, что онлайн-анализатор показывает данные и может исследовать узлы, не может понять, в чем проблема.

full:

https://gist.github.com/THUFIR/ab9e1f77af92d4d984b268434afc01dd.js

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Цитирование документации для CREATE DATABASE:

Синтаксис CREATE DB [name] ([input])

Входными данными может быть путь к файлу или каталогу XML документы , удаленный URL-адрес или строка, содержащая XML

Как видите, команда ожидает файл XML, а не JSON файл.

0 голосов
/ 03 февраля 2020

Кажется, работает:

thufir@dur:~/json$ 
thufir@dur:~/json$ 
thufir@dur:~/json$ basex
BaseX 9.0.1 [Standalone]
Try 'help' to get more information.
> 
> list
Name                 Resources  Size  Input Path                               
-----------------------------------------------------------------------------
com.w3schools.books  1          6290  https://www.w3schools.com/xml/books.xml  
w3school_data        1          5209  https://www.w3schools.com/xml/note.xml   

2 database(s).
> 
> exit
See you.
thufir@dur:~/json$ 
thufir@dur:~/json$ ls
createDB.xquery  formatted.json  raw.json
thufir@dur:~/json$ 
thufir@dur:~/json$ cat createDB.xquery 
let $database := "db"
for $name in file:list('.', false(), '*.json')
let $file := file:read-text($name)
let $json := json:parse($file)
return db:add($database, $json, $name) 
thufir@dur:~/json$ 
thufir@dur:~/json$ basex createDB.xquery 
Stopped at /home/thufir/json/createDB.xquery, 5/14:
[db:open] Database 'db' was not found.
thufir@dur:~/json$ 
thufir@dur:~/json$ basex
BaseX 9.0.1 [Standalone]
Try 'help' to get more information.
> 
> create database db
Database 'db' created in 269.32 ms.
> 
> list
Name                 Resources  Size  Input Path                               
-----------------------------------------------------------------------------
com.w3schools.books  1          6290  https://www.w3schools.com/xml/books.xml  
db                   0          4570                                           
w3school_data        1          5209  https://www.w3schools.com/xml/note.xml   

3 database(s).
> 
> exit
See you.
thufir@dur:~/json$ 
thufir@dur:~/json$ basex createDB.xquery 
thufir@dur:~/json$ 
thufir@dur:~/json$ basex
BaseX 9.0.1 [Standalone]
Try 'help' to get more information.
> 
> list
Name                 Resources  Size    Input Path                               
-------------------------------------------------------------------------------
com.w3schools.books  1          6290    https://www.w3schools.com/xml/books.xml  
db                   2          196469                                           
w3school_data        1          5209    https://www.w3schools.com/xml/note.xml   

3 database(s).
> 
> 

, и этот запрос вернет очень большой документ, слишком большой, чтобы вставить его сюда.

Просто попытайтесь выполнить вышеупомянутое с Java. Точка о JSON против XML была на точке. (Файл xquery из документов.)

При условии, что только отформатированный JSON находится в каталоге, кажется, работает лучше:

thufir@dur:~/json$ 
thufir@dur:~/json$ basex
BaseX 9.0.1 [Standalone]
Try 'help' to get more information.
> 
> list
Name                 Resources  Size    Input Path                               
-------------------------------------------------------------------------------
com.w3schools.books  1          6290    https://www.w3schools.com/xml/books.xml  
db                   1          101838                                           
w3school_data        1          5209    https://www.w3schools.com/xml/note.xml   

3 database(s).
> 
> open db
Database 'db' was opened in 66.85 ms.
> 
> xquery /

и затем возвращает ожидаемый результат (JSON полностью).

...