Bitcoin Forum
May 04, 2024, 11:10:44 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: JSON - нафиг он?  (Read 5037 times)
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
September 29, 2010, 03:01:00 PM
 #1

Почему авторы так любят этот формат? Даже в CLI-интерфейсе всё отдаётся в нём

Благодаря этому я багу словил Sad

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
The forum strives to allow free discussion of any ideas. All policies are built around this principle. This doesn't mean you can post garbage, though: posts should actually contain ideas, and these ideas should be argued reasonably.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
MrBison
Member
**
Offline Offline

Activity: 61
Merit: 10

Anyone who opposes FOSS shall be destroyed!


View Profile
September 29, 2010, 03:10:18 PM
 #2

Потому что его легко интерпретировать в различных языках программирования. Во-первых, есть множество биндингов для различных ЯП. Во-вторых, результаты запросов могут представлять собой таблицу или массив, но при этом их можно использовать для любых других нужд.

Please donate BTC to 142VYfhaYBJXsmfMf1LnBiNxb6KYwdj4PM .
BTC0.17 already donated, thanks!
MrBison
Member
**
Offline Offline

Activity: 61
Merit: 10

Anyone who opposes FOSS shall be destroyed!


View Profile
September 29, 2010, 03:11:55 PM
 #3

Насчёт CLI -- было бы неплохо написать ncurses-интерфейс для bitcoin или переделать wxgtk-интерфейс для bitcoind.

Please donate BTC to 142VYfhaYBJXsmfMf1LnBiNxb6KYwdj4PM .
BTC0.17 already donated, thanks!
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
September 29, 2010, 03:33:06 PM
 #4

Потому что его легко интерпретировать в различных языках программирования. Во-первых, есть множество биндингов для различных ЯП. Во-вторых, результаты запросов могут представлять собой таблицу или массив, но при этом их можно использовать для любых других нужд.

ааа, легко?! Smiley

Code:
[
    {
        "label" : "",
        "amount" : 251.61000000,
        "confirmations" : 11
    },
    {
        "label" : "user_id:152",
        "amount" : 842.20000000,
        "confirmations" : 12
    },
    {
        "label" : "user_id:21",
        "amount" : 1.00000000,
        "confirmations" : 1328
    }
]

вот такое примерно получил я в CLI. отинтерпретируйте мне пожалуйста это в 3 столбика? не забывайте, что порядок следования этих полей может измениться

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
September 29, 2010, 03:34:53 PM
 #5

Насчёт CLI -- было бы неплохо написать ncurses-интерфейс для bitcoin или переделать wxgtk-интерфейс для bitcoind.

не надо путать CLI и терминал

Вообще, Сатоши с точки зрения "маркетинга" может быть и прав был, когда сделал клиента "всё в одном" - и гуй, и демон и cli. Но вот писать теперь под биткоин интерфейсы не слишком удобно. лучше бы это была библиотека...

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
d1337r
Full Member
***
Offline Offline

Activity: 210
Merit: 100


View Profile
September 29, 2010, 04:19:28 PM
 #6

Потому что его легко интерпретировать в различных языках программирования. Во-первых, есть множество биндингов для различных ЯП. Во-вторых, результаты запросов могут представлять собой таблицу или массив, но при этом их можно использовать для любых других нужд.

ааа, легко?! Smiley

Code:
[
    {
        "label" : "",
        "amount" : 251.61000000,
        "confirmations" : 11
    },
    {
        "label" : "user_id:152",
        "amount" : 842.20000000,
        "confirmations" : 12
    },
    {
        "label" : "user_id:21",
        "amount" : 1.00000000,
        "confirmations" : 1328
    }
]

вот такое примерно получил я в CLI. отинтерпретируйте мне пожалуйста это в 3 столбика? не забывайте, что порядок следования этих полей может измениться

Зато если я использую, скажем, библиотеку для, скажем, PHP, тот же самый запрос оказывается таблицей, которую удобно парсить Smiley .
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
September 29, 2010, 04:29:58 PM
Last edit: September 29, 2010, 04:58:31 PM by bitcoinex
 #7


вот такое примерно получил я в CLI. отинтерпретируйте мне пожалуйста это в 3 столбика? не забывайте, что порядок следования этих полей может измениться

Зато если я использую, скажем, библиотеку для, скажем, PHP, тот же самый запрос оказывается таблицей, которую удобно парсить Smiley .

Понятно что это не олимпиадная задача и распарсить это можно. Мне не понятно почему оно в CLI.

Пока, как я понял, мне чтобы это распарсить (этой штукой http://github.com/micha/jsawk ) придётся поставить целый javascript-интерпретатор, видимо, и худо-бедно изучить яваскрипт. Вот оно мне надо? И всё из-за того что кому-то нравится JSON выдать в stdout

Вот, собственно, решение:
Code:
$ cat test.txt |jsawk -n 'out(this.label+" "+this.amount+" "+this.confirmations)'
 251.61 11
user_id:152 842.2 12
user_id:21 1 1328

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
LZ
Legendary
*
Offline Offline

Activity: 1722
Merit: 1072


P2P Cryptocurrency


View Profile
September 30, 2010, 02:10:32 AM
 #8

А сейчас просто этот JSON в моде и все тут. Smiley

My OpenPGP fingerprint: 5099EB8C0F2E68C63B4ECBB9A9D0993E04143362
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
September 30, 2010, 08:48:05 AM
 #9

А сейчас просто этот JSON в моде и все тут. Smiley

ага, эдакий XML v2.0

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
eurekafag
Full Member
***
Offline Offline

Activity: 185
Merit: 100


View Profile
September 30, 2010, 09:23:24 AM
 #10

Нет, XML куда сложнее. В нём есть именованные узлы, атрибуты и косвенные параметры, влияющие на разбор. А JSON — это просто список ключ-значение, зачастую, со вложенными такими же списками.
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
September 30, 2010, 09:49:23 AM
 #11

Нет, XML куда сложнее. В нём есть именованные узлы, атрибуты и косвенные параметры, влияющие на разбор. А JSON — это просто список ключ-значение, зачастую, со вложенными такими же списками.

Не, я о моде - была такая же мода на xml, если помните

Под конец даже конфиги в /etc даже пытались на него переводить Smiley

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
LZ
Legendary
*
Offline Offline

Activity: 1722
Merit: 1072


P2P Cryptocurrency


View Profile
September 30, 2010, 12:40:59 PM
 #12

Да, переводили, то еще извращение. У некоторых пользователей вполне так прижилось. Undecided

My OpenPGP fingerprint: 5099EB8C0F2E68C63B4ECBB9A9D0993E04143362
eurekafag
Full Member
***
Offline Offline

Activity: 185
Merit: 100


View Profile
September 30, 2010, 04:48:39 PM
 #13

Hal/udev так и используют до сих пор. С json всё несколько проще. Во-первых, он реально компактен. Точнее, это, пожалуй, наиболее компактный из небинарных форматов хранения данных, обладающий достаточной гибкостью (хотя кроме иерархии от него ничего и не требуется, даже аттрибуты XML можно сэмулировать, хотя лучше нормально продумать структуру). Во-вторых, его намного проще парсить, чем XML. Например, не нужно проверять соответствие и правильность порядка вложенностей, только количество открывающих-закрывающих скобок, а их порядок остаётся на совести выводящего, потому что все скобки равноправны. В XML, напротив, конструкция <a><b></a></b> является синтаксически неверной, что влечёт дополнительные проверки, стек и утяжеление кода. В-третьих, это родной формат JavaScript для хранения структур данных, собственно, из названия оно и понятно. Ну и в-четвёртых, это всё же человекопонятный формат, т.е. его одинаково легко читает и модифицирует как человек, так и машина, что позволяет в разы быстрее находить ошибки и исправлять их людям, далёким от кода программы. Это, само собой, в сравнении с бинарными протоколами, которые без спецификации, дебаггера, tcpdump и поллитры не разобрать.

Но вот XML не одобряю, потому что в ней на самом деле много лишней писанины с точки зрения как человека, так и машины (открытие-закрытие тегов занимает половину объёма текста), а JSON очень неплох, потому как реально ничего лишнего. Кстати, питонские массивы имеют полностью односторонне-совместимый с JSON синтаксис (т.к. в питоне есть ещё tuples в круглых скобках, которые не определены в JSON). Наверно, ещё и поэтому я ему симпатизирую.
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
October 02, 2010, 06:50:51 PM
 #14

Hal всё, похоже.

Да, наверно у меня после xml аллергия на универсальные форматы для всего-всего во Вселенной... Smiley

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
dbitcoin
Hero Member
*****
Offline Offline

Activity: 742
Merit: 500

BTCDig - mining pool


View Profile WWW
March 24, 2011, 12:25:32 PM
 #15


вот такое примерно получил я в CLI. отинтерпретируйте мне пожалуйста это в 3 столбика? не забывайте, что порядок следования этих полей может измениться

Зато если я использую, скажем, библиотеку для, скажем, PHP, тот же самый запрос оказывается таблицей, которую удобно парсить Smiley .

Понятно что это не олимпиадная задача и распарсить это можно. Мне не понятно почему оно в CLI.

Пока, как я понял, мне чтобы это распарсить (этой штукой http://github.com/micha/jsawk ) придётся поставить целый javascript-интерпретатор, видимо, и худо-бедно изучить яваскрипт. Вот оно мне надо? И всё из-за того что кому-то нравится JSON выдать в stdout

Вот, собственно, решение:
Code:
$ cat test.txt |jsawk -n 'out(this.label+" "+this.amount+" "+this.confirmations)'
 251.61 11
user_id:152 842.2 12
user_id:21 1 1328
Собственно не понятно зачем парсить именно cli в консоли (ну кроме как для тестов), если нормально работает rpc.
А уж к rpc делать запросы можно откуда угодно и везде есть библиотеки.

BTCDig - mining pool (Stratum, VarDiff, DGM, SSL, JSON API)
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
March 24, 2011, 12:53:41 PM
 #16

Собственно не понятно зачем парсить именно cli в консоли (ну кроме как для тестов), если нормально работает rpc.
А уж к rpc делать запросы можно откуда угодно и везде есть библиотеки.

Слишком много прав rpc даёт. Взломают ПХП код - унесут биткоины.

Надо делать "прокладку" через sudo, например, которая позволит только проверить баланс, но не sendtoaddress.

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
Chooseusername
Member
**
Offline Offline

Activity: 94
Merit: 10


View Profile WWW
March 24, 2011, 01:19:23 PM
 #17

JSON затем, что в браузерах везде javascript. А JSON - нативный javascript и есть. И никто парсилки для всяких там XML в AJAX-приложениях писать не будет, ибо они только замедлят скорость работы приложения. Посему переходите на JSON и будет вам счастье.
Manjago
Sr. Member
****
Offline Offline

Activity: 294
Merit: 250


я не ламер, я java-прогаммер :-)


View Profile WWW
March 24, 2011, 02:24:23 PM
 #18

А мне, как java-программеру, JSON нравится. Из него просто и легко поднять класс при помощи сторонних библиотек, а класс - они есть класс  Smiley
dbitcoin
Hero Member
*****
Offline Offline

Activity: 742
Merit: 500

BTCDig - mining pool


View Profile WWW
March 24, 2011, 02:26:13 PM
 #19

Собственно не понятно зачем парсить именно cli в консоли (ну кроме как для тестов), если нормально работает rpc.
А уж к rpc делать запросы можно откуда угодно и везде есть библиотеки.

Слишком много прав rpc даёт. Взломают ПХП код - унесут биткоины.

Надо делать "прокладку" через sudo, например, которая позволит только проверить баланс, но не sendtoaddress.

Ну разве что... однако если пхп код дыряв можно и с сервера утащить все. Было бы желание, а дырки найдутся.
Тут только один вариант более мене надежен, вынос биткоина в другое место и проведение тразакций руками.

p.s. не читайте советских газет (не используйте php код) Smiley

BTCDig - mining pool (Stratum, VarDiff, DGM, SSL, JSON API)
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
March 24, 2011, 02:29:22 PM
 #20

Собственно не понятно зачем парсить именно cli в консоли (ну кроме как для тестов), если нормально работает rpc.
А уж к rpc делать запросы можно откуда угодно и везде есть библиотеки.

Слишком много прав rpc даёт. Взломают ПХП код - унесут биткоины.

Надо делать "прокладку" через sudo, например, которая позволит только проверить баланс, но не sendtoaddress.

Ну разве что... однако если пхп код дыряв можно и с сервера утащить все. Было бы желание, а дырки найдутся.
Тут только один вариант более мене надежен, вынос биткоина в другое место и проведение тразакций руками.

Нет, не руками. "Прокладка" действительно в этом случае хорошо работает

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!