JSONedit
JSONedit jest prostym programem przeznaczonym do edycji plików/tekstu
w formacie JSON dla systemu Windows.
Program udostępnia widok
tekstowy, umożliwiający bezpośrednią edycję, widok drzewa ułatwiający przeglądanie
zawartości i niektóre operacje edycyjne oraz ukierunkowany na filtrowanie widok listy. Kompletny program (pojedynczy plik wykonywalny)
ma rozmiar około 2 MB (w tym statycznie linkowane Lua i Scintilla), nie wymaga instalacji i nie jest zależny od żadnych niestandardowych
bibliotek dll.
Ograniczenia: brak obsługi Unicode. Oczywiście przy ograniczeniu do zestawu znaków o kodach 0x00 do 0x7F kodowanie ASCII jest tożsame z UTF-8. Pośrednim rozwiązaniem może być praca z plikami o kodowaniu zgodnym z ustawionym w systemie operacyjnym i konwertowanie ich do Unicode przy użyciu innego narzędzia. Uwaga: obsługa UTF-8 jest dodana w testowej wersji 0.10.
Program działa z pewnymi ograniczeniami pod WINE. Testowany JSONedit 0.8 z WINE 1.3
ma problemy z edycją dużych plików (b. powolne otwieranie w stosunku do Windows) oraz
rysowaniem widoku drzewa (aby indeksy sklonowanych węzłów zostały uaktualnione
należy zwinąć i rozwinąć rodzica). Przy użyciu WINE 1.6.2 działanie wydaje się nieco lepsze.
Licencja: freeware (free as in beer).
- 2010.05.12 Wersja 0.1.
- 2010.06.24 Wersja 0.2.
- usunięte domyślne ograniczenie długości tekstu RichEdit,
- pusta tablica nie jest zamieniana na obiekt typu null przy konwersji na tekst,
- dodane menu kontekstowe (Undo/Cut/Copy...) do edytora tekstu,
- dodane menu kontekstowe Copy/Paste as sibling/Paste as child do widoku drzewa; przy wymianie danych ze schowkiem używany jest format tekstowy - możliwe jest wklejanie dowolnego tekstu reprezentującego poprawny obiekt JSON,
- dodany dialog wymuszający zmianę typu rodzica na obiekt lub tablicę przy dodawaniu dziecka.
- 2010.07.27 Wersja 0.3.
- usunięta zależność od biblioteki cc3270mt.dll,
- dodana funkcja szukania w tekscie dla widoku edytora tekstowego.
- 2010.08.19 Wersja 0.4.
- aktywny widok (tekst lub drzewo) zapisywany jest w pliku ini,
- F3 = Find Next (wyszukiwanie działa nadal tylko w widoku tekstowym),
- edycja nazwy i typu obiektu root oraz nazwy elementów tablic ([0], [1],...) jest zablokowana (w wersjach poprzednich była możliwa, ale nie odnosiła skutku),
- przy używaniu opcji auto-update i edycji obiektów typu int lub float przy użyciu drzewa aktualizacja nie jest wykonywana gdy tekst reprentujący liczbę jest pusty lub składa się tylko ze znaku "-" (usunięte denerwujące wyjątki "Not a valid integer value" przy edycji),
- przy tworzeniu struktury drzewa przy wczytywaniu teksty istniejąca struktura drzewa jest wykorzystywana ponownie jeżeli zastane zostaną węzły/obiekty o tych samych nazwach - przy edycji podobnych plików poprzednio rozwinięte węzły drzewa nie zmieniają swojego stanu; funkcja jest pomocna przy porównywaniu plików,
- dodane proste przenoszenie węzłów poprzez "drag and drop".
- 2010.08.30 Wersja 0.5
- poprawiona regresja: duże obciążenie CPU przy parsowaniu tablic o dużej ilości elementów wprowadzone wraz z funkcją ponownego wykorzystywania struktury drzewa; brak jest podobnej poprawki dla parsowania obiektów o bardzo dużej liczbie dzieci - przy parsowaniu tekstu o rozmiarze kilku MB i większym wskazane może być wyłączenie ww. funkcji (Settings/Editor),
- nazwa pliku do otwarcia pobierana z linii komend,
- okno Settings: dodana funkcja skojarzenia programu z plikami .json,
- zapamiętywany domyślny katalog do otwierania/zapisywania plików,
- poprawiona responsywność GUI przy edycji w trybie drzewa poprzez wstrzymanie generowania tekstu do czasu kiedy ten tekst jest potrzebny,
- dodane pozycje "Expand all" i "Collapse all" w menu kontekstowym drzewa.
- 2010.09.14 Wersja 0.6
- FIXED: domyślny katalog był uaktualniany tylko przy otwieraniu pliku z linii komend,
- akceptowanie pliku przeciąganego do okna aplikacji,
- przyśpieszenie rekursywnych funkcji expand/collapse,
- dodane narzędzie "Reformat"; pliki które zostały sformatowane w jednakowy sposób - sugerowane formatowanie z indentacją - są łatwe do porównania lub merdżowania z użyciem zwykłych narzędzi do pracy z tekstem jak WinMerge lub funkcja "Compare By Content..." Total Commandera,
- dodana opcja wyboru wyjściowego formatu tekstu (format zwięzły lub z indentacją); wybrany format jest używany przy generowaniu tekstu przy modyfikacji drzewa, kopiowaniu gałęzi drzewa do schowka i przy reformatowaniu tekstu,
- dodane wyszukiwanie wstecz do widoku tekstowego,
- dodane wyszukiwanie w widoku drzewa (porównywanie z nazwami węzłów, wartościami węzłów lub z nazwami i wartościami); wartości zmiennoprzecinkowe uznawane są za zgodne przy różnicy nie przekraczającej 1% wartości wskazanej.
- 2010.09.18 Wersja 0.6.1
- FIXED: brak cudzysłowów w linii poleceń zapisywanej w rejestrze przy kojarzeniu programu z plikami .json skutkujący problemem przy otwieraniu przez podwójne kliknięcie plików ze spacjami w ścieżce; kolejne użycie przycisku "Associate" wpisuje poprawną linię,
- węzeł root rozwijany przy wczytywaniu nowego tekstu.
- 2011.02.28 Wersja 0.7
- zmiana działania funkcji "drag and drop": domyślną akcją jest kopiowanie węzła, jeżeli wciśnięty jest shift węzeł jest przenoszony; dodane osobne kursory kopiowania i przenoszenia podobne do używanych przez Windows Explorer czy Total Commander,
- dodana lista ostatnio używanych plików,
- dodana pozycja menu File/New tworząca pusty obiekt "root" (ustawiająca tekst "{}"); tekst "{}" jest także ustawiany jako domyślny przy uruchamianiu,
- poprawki: renumeracja dzieci rodzica przenoszonego węzła po użyciu funkcji "drag and drop" (jeżeli rodzic jest tablicą), sprawdzanie, czy nie dochodzi do zduplikowania nazw węzłów przy przenoszeniu/kopiowaniu, ustalone minimalna wysokość i szerokość okna głównego, ustawione kotwiczenie dla pól edycji nazwy i wartości węzła.
- 2011.05.27 Wersja 0.8
- FIXED: niepoprawne dopasowywanie przy wyszukiwaniu - np. ciąg "1." dopasowywany do węzła typu int o wartości 1,
- dodana funkcja "Clone N times",
- dodane proste statystyki węzła i jego podwęzłów (w zamierzeniu przeznaczone do
szacowania zużycia pamięci przez parsery DOM).
- 2011.11.05 Wersja 0.8.1, podziękowania dla
Tito Bouzout za sugestie
- dodana nazwa pliku i katalogu do wyświetlanego tytułu aplikacji,
- dodana do menu opcja File/Save (poprzednio: tylko File/Save as...),
- edycja wartości obiektu typu string zmieniona na wieloliniową,
- przy edycji wartości int i float komunikat z wyjątkiem gdy wartość wpisana nie tworzy poprawnej liczby zastąpiony został zmianą koloru pola edycyjnego na czerwony,
- FIXED: niepoprawna wartość int/float gdy typ węzła zmieniony został na ten ale nie została wpisana żadna poprawna wartość; przywracanie poprzedniego typu węzła.
- 2012.03.03 Wersja 0.8.2 JSONedit_0_8_2.7z
- FIXED: typ węzła pozbawionego dzieci nie zmienia się z object na null,
- czyszczenie interfejsu
- usunięta pozycja "Parse and update" z menu kontekstowego edytora tekstowego; tekst jest parsowany przy każdym przełączeniu na drzewo jeżeli został zmodyfikowany,
- "Node statistics" przesunięte z menu kontekstowego drzewa do menu "Tools",
- usunięte przycisk "Update node" i checkbox "Update immediately" jako najprawdopodobniej nigdy nie używane przez użytkowników,
- nowy plik (File/New) dostaje domyślną nazwę "New1.json", "New2.json", itd.,
- dadany dialog ostrzegający o niezapisanych zmianach przy próbie otwarcia nowego pliku lub zamknięcia programu,
- w tytule okna dodawana gwiazdka do nazwy pliku jeżeli zawiera on niezapisane zmiany,
- do menu pomocy dodane przykłady JSON: przykłady z json.org, plik konfiguracyjny miniscope v4/sig_test.dll oraz wynik zapytania zwrócony przez gdata.youtube.com.
- 2012.03.10 Wersja 0.9 JSONedit_0_9.7z
- dodany konwerter CSV na JSON,
- nazwy węzłów edytowane jako wieloliniowe - głównie na potrzeby testu importu plików CSV ze znakami nowej linii wewnątrz pola.
- 2012.03.15 Wersja 0.9.1 JSONedit_0_9_1.7z
- FIXED: nieakceptowalne ograniczanie precyzji przy drukowaniu wartości zmiennoprzecinkowych (podziękowania dla eyemedia za zgłoszenie),
- FIXED: wklejanie tekstu z użyciem opcji "Paste as root from clipboard" skutkowało doklejaniem tekstu w edytorze tekstu do tekstu już obecnego.
- 2012.05.12 Wersja 0.9.2 JSONedit_0_9_2.7z
- dodany prosty klient HTTP z usuwaniem callbacka JSONP
(Tielman de Villiers: podziękowania za sugestię).
- dodany prosty klient HTTP z usuwaniem callbacka JSONP
(Tielman de Villiers: podziękowania za sugestię).
- 2012.07.13 Wersja 0.9.3 JSONedit_0_9_3.7z
- dodane kilka skrótów (Ctrl+S, Ctrl+Shift+S, Ctrl+N, Ctrl+O), podziękowania dla Martina za sugestię.
- 2012.08.01 Wersja 0.9.4 JSONedit_0_9_4.7z
- dodana możliwość zachowania nazwy węzła przy kopiowaniu do/ze schowka (dodatkowy wrapper JSON przechowujący nazwę); domyślnie copy/paste używa wciąż tekstu JSON bezpośrednio reprezentującego węzeł; podziękowania dla Petera za sugestię. Opcja działa tylko przy kopiowaniu w obrębie programu JSONedit, jeżeli używane są dwie instancje programu musi być włączona w obu dla poprawnego działania.
- 2012.08.08 Wersja 0.9.4.2 JSONedit_0_9_4_2.7z
- poprawki dotyczące pracy z wieloma monitorami: zmiana Position na poOwnerFormCenter, modyfikacja zachowania standardowych okien dialogowych; podziękowania dla Petera za sugestię.
- 2012.08.15 Version 0.9.5 JSONedit_0_9_5.7z
- FIXED: znikający combobox wyboru typu węzła po zmniejszeniu rozmiaru okna,
- dodany generator tablic bazujący na wbudowanym interpreterze Lua.
- 2012.09.09 Version 0.9.6 JSONedit_0_9_6.7z
- zmieniony edytor tekstu z TRichEdit na Scintilla -
kolorowanie składni, folding, dopasowywanie nawiasów, numerowanie linii. Jest to relatywnie
duża zmiana, w przypadku wystąpienia problemów polecam powrót do poprzedniej wersji.
- zmieniony edytor tekstu z TRichEdit na Scintilla -
kolorowanie składni, folding, dopasowywanie nawiasów, numerowanie linii. Jest to relatywnie
duża zmiana, w przypadku wystąpienia problemów polecam powrót do poprzedniej wersji.
- 2013.01.21 Wersja 0.9.6.1 JSONedit_0_9_6_1.7z
- FIXED: po użyciu funkcji "Reformat" zmiany wprowadzone w trybie tekstowym w dokumencie znikały jeżeli wcześniej nie było przełączenia na widok drzewa; podziękowania za zgłoszenie: Dan Hersam.
- 2013.02.11 Wersja 0.9.7 JSONedit_0_9_7.7z -
dodane wsparcie dla komentarzy (które nie powinny być stosowane ze względu na to, że nie należą do standardu)
- uwzględnianie komentarzy przez parser jako konfigurowalna opcja,
- wyświetlanie i edytowanie komentarzy w widoku drzewa; przy edycji wymagane jest użycia javascriptowych znaczników // lub /**/, z drugiej strony komentarze liniowe i blokowe a nawet puste linie mogą być swobodnie mieszane,
- zapis szerokości panelu edycji drzewa do pliku konfiguracyjnego.
- 2013.03.09 Wersja 0.9.7.3 JSONedit_0_9_7_3.7z
- FIXED: kolor kontrolki edycji komentarza nie był przywracany po wprowadzenie błędnie escape'owanego komentarza a następnie przełączeniu na inny węzeł,
- FIXED: błąd parsowania/walidacji JSON: tekst po zamykającym nawiasie był ignorowany - przypadkowo wpisany nawias zamykający sparowany z pierwszym nawiasem otwierającym powodował ignorowanie całego tekstu za nim, zgłoszone przez Toshiyuki,
- dodana częściowa (drzewo, Scintilla i kontrolki edycyjne) wybór czcionek, (sugestia od Sungwook).
- 2013.04.04 Dodany ListJson.wlx - plugin do podglądu
zawartości w formie drzewa dla Total Commandera (tylko wersja 32-bit). Zestaw
funkcji jest ograniczony i prawdopodobnie jedynym praktycznym zastosowaniem pluginu
jest funkcja Quick View (Ctrl+Q).
- 2013.05.07 Wersja 0.9.7.6 JSONedit_0_9_7_6.7z
- FIXED: po uruchomieniu programu z linii komend gdy użyta została względna ścieżka do dokumentu do otwarcia funkcja Save działała jak Save as wyświetlając przy tym dialog z niepoprawnym początkowym katalogiem (zgłoszone przez Michaela); ścieżki do plików konwertowane na bezwzględne i w takiej postaci zapisywane w historii,
- klawisz F2 w widoku drzewa przypisany do funkcji zmiany nazwy węzłae (sugestia Samuela),
- dodana nowa opcja konfiguracyjna dla parsera JSON: traktowanie znaków sterujących (U+0000 ... U+001F) wewnątrz stringów jako błędu (sugestia od Michaela).
- 2013.12.10 Wersja 0.9.7.8 JSONedit_0_9_7_8.zip
- jeżeli plik przekazany jako parametr programu nie istanieje, tworzony jest nowy plik,
- widok drzewa: przypisane skróty Ctrl+C (kopiowanie elementu) i Ctrl+V (wklejenie jako dziecko).
- 2014.03.08 Wersja 0.9.7.9 JSONedit_0_9_7_9.zip
- widok drzewa, menu kontekstowe: dodana (obok "Expand All") funkcja rozwijająca od 1 do 5 poziomów drzewa,
- Help: dodany tekst RFC 7159, RFC 4627 i RFC 5234 (ABNF),
- FIXED: brak możliwości zmiany typu węzła root w poprzednich wersjach - według RFC 7159 tekst JSON może być dowolnego typu,
- widok drzewa: wartość null prezentowana w identyczny sposób jak true/false.
- 2014.05.24 Wersja 0.9.7.12 JSONedit_0_9_7_12.zip
- FIXED: działanie skrótów Ctrl+C/Ctrl+V uzależnione od tego który element edytora jest aktualnie aktywny, kopiowanie tekstu w polach edycyjnych, kopiowanie węzłów na drzewie (podziękowania dla Michaela za zgłoszenie regresji),
- przywracanie focusa do edytora Scintilli przy przełączeniu z widoku drzewa na widok tekstu,
- szerokość karetki Scintilli zwiększona do 2 pikseli.
- 2014.06.16 Wersja 0.9.8 JSONedit_0_9_8.zip
- Tools: generator klas C++
- 2014.08.24 Wersja 0.9.9 JSONedit_0_9_9.zip
Usprawniona obsługa programu przy użyciu klawiatury i kilka innych drobnych zmian, podziękowania dla Brata Gabriel-Marie za sugestie i testowanie:- konfiguracja: dodana możliwość wyłączenia akceptowania Tab przez pola edycyjne (w celu umożliwienia użycia Tab do przechodzenia między kontrolkami),
- dodane przyciski Up/Down dla elementów tablicy ułatwiające zamianę ich kolejności (+ zamiana "Node name" na "Node index"),
- dodany filtr *.txt do dialogów otwarcia i zapisu pliku,
- konfiguracja: dodana opcja powodujące zaznaczenie całego tekstu w polu edycyjnym przy przejściu do niego (ułatwienie przy zastępowaniu tekstu nowym),
- wyłączona właściwość TabStop dla TPageControl w edytorze (zbędny krok przy nawigowaniu przy użyciu Tab),
- przydzielone skróty klawiszowe dla akcji "Add child" (Ctrl+H) i "Add siblings" (Ctrl+B) w widoku drzewa,
- ustawienia: dodana informacja "running with admin rights required" przy przycisku kojarzącym program z plikami *.json,
- zwiększony rozmiar okna "About" dla zwiększenia czytelności tekstów licencji.
- 2015.07.26 Wersja 0.9.10 JSONedit_0_9_10.zip
- widok drzewa: kolorowanie węzłów (tekst + tło, nowa karta konfiguracji) zgodnie z ich typem
- 2015.08.30 Wersja 0.9.11 JSONedit_0_9_11.zip
- Generator tablic: dodany import CSV do menu kontekstowego drzewa (dostępne 2 z 3 schematów konwersji)
- View/Line wrap (skrót Ctrl+W): zawijanie wierszy dla widoku tekstu
- natychmiastowe przełączenie do widoku tekstu przy błędzie parsowania otwieranego pliku
- search dialog: podstawianie domyślnego tekstu z zaznaczenia lub aktywnego węzła
- 2015.09.16 Wersja 0.9.11.1 JSONedit_0_9_11_1.zip
- długo wyczekiwana (sugestie: Michael Maron, Sean Sherrard, B.G.M., Todd Matthews, Darwin Sanoy) opcja umożliwiająca wyłączenie alfabetycznego sortowanie elementów obiektu po nazwie (Settings/JSON)
- automatyczne rozwijanie root przy przełączeniu z widoku tekstu do drzewa po modyfikacji tekstu i po wklejaniu tekstu ze schowka jako root
- 2015.09.17 Wersja 0.9.12 JSONedit_0_9_12.zip
- w konfiguracji domyślnej sortowanie elementów obiektu jest wyłączone (kolejność elementów jest zachowywana)
- widok drzewa: przyciski do przesuwania elementów obiektu w górę/dół (widoczne tylko gdy sortowanie jest wyłączone)
- 2015.09.21 Wersja 0.9.13 JSONedit_0_9_13.zip
- FIXED: niedziałająca od wersji 0.9.7.8 funkca "Paste as sibling from clipboard" (podziękowania za zgłoszenie dla Darwina Sanoya)
- "Paste as sibling from clipboard" wstawia nowy węzeł bezpośrednio za zaznaczonym zamiast na końcu
- 2015.09.27 Wersja 0.9.14 JSONedit_0_9_14.zip
- sprawdzanie UTF BOM
- możliwość pominięcia UTF-8 BOM przed przekazaniem pliku do parsera
- pliki zapisywane na dysk są zawsze pozbawione BOM - wydaje się że wiele aplikacji nie obsługuje UTF-8 z BOM
- informowanie że kodowania UTF-16 i UTF-32 nie są wspierane jeżeli takie kodowanie zostanie wykryte
- edycja wartości węzła bezpośrednio na drzewie - przypisana do F4
- uzupełnienie funkcji edycji nazwy (F2)
- działa z typamie niezłożonymi (string, int, real, boolean)
- edycja wartości typu string (podobnie jak edycja nazwy) jest ograniczone do tekstu 1-liniowego
- dla typu boolean akceptowane są "0" i "1" oraz "false" i "true"
- log: dodany pomiar czasu wykonywania dla podstawowych operacji (parsowanie i generowanie JSON, tworzenie drzewa)
- rozszerzone automatyczne rozwijanie drzewa po załadowaniu nowego tekstu
- nowe ustawienie, liczba poziomów do rozwinięcia, 1 (ustawienie domyślne, rozwinięty tylko) ... 5
- jeżeli liczba poziomów do rozwinięcia jest większa od 1 edytor rozwija rekursywnie kolejne poziomy aż do wskazanej liczby ale przerywa jeżeli po rozwinięciu liczba widocznych węzłów przekroczyłaby 30
- sprawdzanie UTF BOM
- 2015.11.08 Wersja 0.9.15
- FIXED problem z błądną generacją JSON dla wartości zmiennoprzecinkowych o dużej precyzji (1000000000000000.0, 1000000000000000.1 => "1000000000000000.")
- uporządkowanie obsługi wartości zmiennoprzecinkowych (konsekwentne użycie typu double)
- wartości całkowite reprezentowane są jako 64-bitowe ze znakiem i bez znaku (poprzednio: 32-bitowe zawsze ze znakiem)
- przykładny: dodany plik zakładek PaleMoon/FireFox (korzystający z wartości 64-bitowych)
- wybrane poprawki przeniesione z json-cpp
- ustawienia: wybór typu dla nowo tworzonych węzłów (domyślnie: string zamiast poprzednio używanego null)
- ustawienia: opcja automatycznego uaktywnienia edytora in-place (jak po użyciu F4 na drzewie) dla nowo dodanego węzła
- 2015.11.18 Wersja 0.9.15.1 JSONedit_0_9_15_1.zip
- poprawiona obsługa wartości 64-bit bez znaku (np. 18446744073709551615 = 2^64 - 1) przy użyciu pola edycyjnego na panelu z prawej strony
- poprawiony problem (prawdopodobnie błąd funkcji sscanf z implementacji w TC++) z wprowadzaniem wartości ujemnych spoza zakresu 32-bit signed
- poprawione/przywrócone sygnalizowanie błędu przy wprowadzaniu liczby spoza obsługiwanego zakresu (kolor czerwony dla pola edycyjnego)
- precyzyjniejsze lokalizowanie błędu przy parsowaniu/walidowaniu tekstu (kursor przesuwany do właściwej kolumny - użyteczne zwłaszcza przy niesformatowanym tekście wejściowym)
- 2015.12.20 Wersja 0.9.16 JSONedit_0_9_16.zip
- edytor dla Lua bazujący na Scintilli (poprzednio użyty dla pluginu Script.dll do softfona tSIP)
- okno skryptu Lua dostępne jest z menu Tools (oprócz poprzednio generatoratora tablic dostępnego z menu kontekstowego drzewa)
- opcjonalne wstępne przetwarzanie wprowadzonych nazw i wartości w widoku drzewa z użyciem Lua
- 2016.01.30 Wersja 0.9.17 JSONedit_0_9_17.zip
- Ctrl+A (Select all) działa w polach edycyjnych nazwy/wartości/komentarzy
- dodana funkcja "Duplicate node" (Ctrl+D) do menu kontekstowego; działa z tablicami i obiektami (dla obiektów wymagana jest ręczna zmiana nazw dla zapewnienia ich unikalności)
- 2016.04.06 Wersja 0.9.18 JSONedit_0_9_18.zip
- snippets, przechowywane jako pliki JSON w podkatalogu
- 2016.06.14 Wersja 0.9.19 JSONedit_0_9_19.zip
- ograniczenie precyzji drukowania liczb zmiennoprzecinkowych z 17 do 16 cyfr dla usunięcia przejść typu 25.7 -> 25.699999999999999 transition w cyklu parsowanie + generacja
- okno statystyki: możliwość skopiowania tekstu, poprawione wyrównywanie tekstu przy dużych plikach
- dialog wyszukiwania umożliwia określenie/ograniczenie typów wyszukiwanych węzłów, umożliwiając np. wyszukanie ciągu tekstowego "0" z pominięciem wartości liczbowych
- FIXED: pseudo-nazwy elementów tablic ("[0]", "[1]", itd.) są ignorowane przy wyszukiwaniu w widoku drzewa
- 2016.10.08 Wersja 0.9.20 JSONedit_0_9_20.zip
- nowy widok - lista - zorientowany na filtrowanie
- szybkie filtrowanie podobne do dialogu "Find"
- menu kontekstowe: Go to tree
- podstawowa edycja wartości (Enter, double click)
- nowy widok - lista - zorientowany na filtrowanie
- 2016.12.17 Wersja 0.9.21 JSONedit_0_9_21.zip
- FIXED: po użyciu Expand All / Expand # levels pozycja drzewa zmieniała się na ostatni z rozwiniętych węzłów
- FIXED: bardzo powolne przewijanie w trybie listy przy wyświetlaniu tablic o dużych liczbach elementów
- FIXED: migotanie listy przy przewijaniu (double buffering)
- dodany wybór czcionki dla widoku listy
- kolorowanie węzłów w widoku listy, analogicznie do widoku drzewa
- widok listy: wyświetlanie liczby węzłów odfiltrowanych i ogólnej ich liczby
- menu Tools: eksport zawartości listy do CSV
- dodana opcja automatycznego ładowania ostatniego pliku przy uruchamianiu
- 2017.02.11 Wersja 0.9.22 JSONedit_0_9_22.zip
- Menu Tools: eksperymentalny, tolerancyjny parser pseudo-JSONa, alternatywny sposób tworzenia prototypów struktur do późniejszego wklejania do głównego edytora
- FIXED: od wersji 0.9.16 - brak podświetlania nawiasów w widoku tekst (błędnie wybrany highlighter Lua)
- FIXED: panel edycji wartości nie był aktualizowany po wczytaniu nowego dokumentu, pokazując wartość ze starego do czasu zaznaczenie jakiegokolwiek węzła; węzeł root jest zaznaczany jako domyślny
- FIXED: domyślny katalog dialogu Open nie był aktualizowany po otwarciu pliku z użyciem drag-and-drop
- 2017.04.22 Wersja 0.9.23 JSONedit_0_9_23.zip
- dodane pozycje "Remove obsolete files" i "Clear list" do list MRU w oknie głównym i skryptu Lua
- dodana opcja edycji wartości węzła po podwójnym kliknięciu (jak przy F4)
- węzły mogą być usuwane w widoku listy
- dodany wybór fontu dla narzędzia relaxed parser
- FIXED obsługa pustej tablicy przez relaxed parser
- FIXED możliwy niespójny stan panelu edycji węzła
- usuwanie węzła root resetuje go do pustego obiektu
- 2017.06.09 Wersja 0.9.24 JSONedit_0_9_24.zip
- dodana konfiguracja ciągu indentacji (np. 4 spacje lub tab, ale dowolny ciąg jest dozwolony) dla generowanego tekstu JSON; poprzedni ciąg (3 spacje) pozostawiony jako domyślny
- FIXED przetwarzanie pustego obiektu przez relaxed parser (tekst po pustym obiekcie był ignorowany)
- widok listy:
- multiselect
- Copy/Paste (menu kontekstowe + Ctrl+C/Ctrl+V) dla typów prostych
- Copy/Paste (menu kontekstowe) dla nazw węzłów
- dodane menu kontekstowe do wyboru typów węzłów: Select all/none/invert
- dodana opcja filtrowania: "Add children if parent is matching"
- FIXED zawieszenie przy generacji tekstu z drzewa ze zduplikowanymi nazwami węzłów gdy typ drugiego z węzłów był inny niż pierwszego
- okno importu CSV: rozmiar ustalony na sztywno
- 2017.08.20 Wersja 0.9.25 JSONedit_0_9_25.zip
- do menu kontekstowego w widoku listy dodana funkcja "Add node(s)" operująca na zaznaczonych węzłach
- możliwość dodania nowych węzłów jako dzieci lub na tym samym poziomie
- możliwość dodania typów prymitywnych lub bardziej złożonych obiektów - bezpośrednio jako JSON
- dialog zmiany typu węzła jeżeli nie jest on obiektem ani tablicą przy dodawaniu węzła jako dziecka
- drzewo i lista: dodana funkcja sortowania węzłów w obrębie wskazanego obiektu; konfiguracja sposobu sortowania, możliwość użycia rekursywnego; funkcja przeznaczona jest do użycia raczej z wyłączonym sortowaniem węzłów przez parser/generator (zachowanie kolejności)
- format ustawień zmieniony z ini na JSON; aplikacja importuje stary plik jeżeli nowy nie istnieje; uwaga: edycja własnej konfiguracji jako pliku nie będzie skuteczna ze względu na to że plik zostanie nadpisany przy zamykaniu programu
- dodana funkcja "Delete all siblings before node" do widoku drzewa
- dla zmniejszenia problemów z responsywnością odświeżanie listy przy wprowadzaniu tekstu filtra jest opóźnione o kilkaset ms jeżeli plik zawiera ponad 20000 węzłów
- FIXED: otwarcie okna Lua zmieniało tytuł aplikacji
- FIXED: zmiana selekcji typów węzłów w widoku listy przy użyciu spacji lub menu kontekstowego nie aktualizowała filtrowania natychmiast
- do menu kontekstowego w widoku listy dodana funkcja "Add node(s)" operująca na zaznaczonych węzłach
- 2017.10.21 Wersja 0.9.26 JSONedit_0_9_26.zip
- dodane ustawienie ciągu separującego nazwę od wartości dla obiektów (domyślny: " : "); wraz z ustawienim ciągu indentacji ma to pozwolić na uelastycznienie formatowania i zmniejszenie liczby różnic po edycji plików przechowywanych w systemach kontroli wersji
- FIXED: generowany JSON zawierał zbędne znaki nowych linii jeżeli ostatni znak ciągu indentacji nie był spacją
- Lua zaktualizowana do wersji 5.3 (jak tSIP), dodane kilka własnych funkcji Lua
- dodany mechanizm zdarzeń Lua (kopia z tSIP), zdarzenie "on file save" mające umożliwić dodatkowe formatowanie / postprocessing
- nowe ustawienie (grupa "JSON", opt-out): walidowanie tekstu jako JSON przed zapisaniem (dotyczy widoku tekstu, zabezpiecza przed przypadkowym zapisaniem pliku z błędami)
- dodana pozycja menu: File / Open current file directory
- Tools: dodana przeglądarka plików typu JSON streaming (wartości odseparowane znakami nowych linii: NDJSON/LDJSON/JSONL format)
- zmodyfikowane okno ustawień
- 2017.12.16 Wersja 0.9.27 JSONedit_0_9_27.zip
- FIXED: nazwy elementów obiektów JSONie generowanym przez import CSV były posortowane alfabetycznie także przy wybranym ustawieniu "preserve order"
- możliwość zakmnięcia większości okien przy użyciu Esc
- domyślna pozycja okien C++ class generator i relaxed JSON parser zmieniona na wycentrowaną względem okna głównego
- List view: dodane funkcje "Select all siblings", "Select all children" (dzieci dodane do selekcji) and "Select all children after removing current selection" (dzieci zaznaczone, bieżąca selekcja usunięta)
- List view: menu kontekstowe "Add node(s)" rozdzielone na dodawanie jako dzieci i na tym samym poziomie
- List view: dodana funkcja "Replace/modify node(s)" używająca tego samego dialogu co dodawanie węzłów
- Lua: dodana funkcja GetText(), zwracająca cały dokument
- Lua: dodane zdarzenie "on file open"
- Help: dodane RFC7493 (I-JSON / interoperability) i RFC8259 (aktualizacja RFC7159)
- 2018.02.16 Wersja 0.9.28 JSONedit_0_9_28.zip
- FIXED: zawieszenie przy sekwencji: przełączenie do trybu listy, przełączenie do drzewa, usunięcie węzła, przełączenie do listy
- pliki JSONL/LDJSON/NDJSON mogą być interpretowana jako pojedyńcza tablica i cała ich zawartość może być prezentowana naraz (o ile rozmiar pliku na to pozwoli)
- wskazana tablica może być wyeksportowana jako plik JSONL/LDJSON/NDJSON (menu Tools)
- "Node statistics" działa także dla węzła wskazanego w widoku listy (przy multiselect - pierwszego z zaznaczonych)
- FIXED: statystyka węzła błędnie klasyfikowała zaznaczony węzeł zawsze jako węzeł z nazwą
- snippets: działają także w widoku listy
- Scintilla: dodany lexer JSON (odrębne kolorowanie nazw i wartości, kolorowanie niepoprawnej składni na czerwono, underline dla linków); poprzedni lexer (C++) jest pozostawiony jako domyślny (Settings/Text View)
- FIXED: szerokość marginesu z numerami wierszy w widoku tekstu nie była aktualizowana w niektórych przypadkach (np. po załadowaniu przykładu Palemoon i czterokrotnym jego skopiowaniu)
- lista: wyświetlanie liczby dzieci dla tablic i obiektów
- lista: dodany skrót Ctrl+T jako przejście do drzewa
- 2018.04.15 Version 0.9.29 JSONedit_0_9_29.zip
- added hotkeys mechanism as in tSIP - binding key combination(s) to specified action(s)
- action: running Lua script
- actions: switching between compact and formatted JSON modes and reformatting
- added Lua functions OpenNdjsonViewer() and LoadNdjsonFile(filename)
- added Lua script examples (Help menu of Lua scripting window, can be saved as separate file and then be executed by hotkey)
- fetching/loading HTTP content using curl and digest authentication
- fetching/loading NDJSON from HTTP using curl
- Lua scripting window is now not modal (except for cloning nodes function); multiple windows can be opened same time
- list view: added "Expand tree to show selected nodes" menu item - showing more context for selected nodes
- added File/Start new app instance menu item
- Tools: Find duplicated values (from list view)
- settings: added two color templates for tree and list view (colors are pretty much random) and template with default/system colors
- Ctrl+F in list view moves focus to filter edit control
- added "Paste text from clipboard" to NDJSON viewer
- added hotkeys mechanism as in tSIP - binding key combination(s) to specified action(s)
- 2018.06.17 Version 0.9.30 JSONedit_0_9_30.zip
- more text is visible in NDJSON viewer directly (up to 400 characters per line)
- ID (order starting from 0) is displayed for NDJSON lines
- added: File/Reload and equivalent hotkey action type
- checking if file was changed on disk (opt-in) with options to reload automatically; probably works best with "Reuse tree" option
- Lua:
- added SetViewType(type) function where type = 0 for text, 1 for tree, 2 for list view; be careful when using in situations when view switching would be normally blocked (scripted array generator) as it may break coherency
- added "on startup" and "on timer" script events
- FIXED: no immediate view update and possible crash if SetJsonAsRoot() was used when list view was active
- duplicated values search dialog can export results as CSV
- default configuration: number of levels to auto expand increased from 1 to 3
- increased configuration limit of levels to auto expand from 5 to 10
- added hotkey actions:
- "expand: default" - expanding nodes same way as after new JSON is loaded (roughly - to fill no more than single screen)
- expand all
- collapse all
- search dialog: previously entered text (or text from active node) is selected when window is shown
- 2018.10.17 Version 0.9.31 JSONedit_0_9_31.zip
- FIXED: if change made with in-line editing in tree (F4) was confirmed - displayed node text was missing node name
- FIXED: if Delete key was pressed when using in-line editor in tree or list mode - whole node was deleted
- FIXED: Ctrl+C/Ctrl+V is now working inside in-line editor and filter field in list view
- dialogs requesting changing parent type to object/array for tree and list view can be closed with Esc
- JSON writer: lowered printing precision for double from 16 to 15 digits (roundtrip fail for e.g. value = 79.9)
- added option for UTF-8 to ANSI conversion (file loading) and ANSI to UTF-8 (file saving) - this would be valid for editing UTF-8 files with characters limited to current windows code page, i.e. single language
- added decoding \uXXXX UTF codepoints to ANSI if option for UTF-8 to ANSI conversion is used
- added option to add scrollbars to node value edit field
- added splitter between control groups for editing node value and for editing node comments
- 2019.03.21 Version 0.9.32 JSONedit_0_9_32.zip
- added more color settings and "dark" template for tree and list view, "dark" color schemes for text view (C++ and JSON lexers)
(also: list, text) - more node statistics: maximum nesting level, maximum string value length, maximum name (key) length
- added tSIP configuration file to examples
- changed log window to used in tSIP
- added Lua cheatsheet - as in tSIP
- added Lua ReloadFile(evenIfNotSaved) function; if evenIfNotSaved parameter is equal to 0 then dialog is displayed if file was modified inside editor
- FIXED: suboption "even if file was modified inside editor" for "Monitor file on disk for changes"/"Update file silently" was not working
- added MRU files list for NDJSON viewer
- Lua script and NDJSON viewer windows are accepting files with drag-and-drop
- added Lua example: FTP upload with curl
- "Add node as sibling" tree context menu option adds node immediately after selected (same as "Duplicate node")
- CSV import dialog settings are stored in configuration file
- floating point values are held as strings, allowing to keep e.g. trailing zeroes
- added more color settings and "dark" template for tree and list view, "dark" color schemes for text view (C++ and JSON lexers)
- 2019.06.08 Version 0.9.32.2 JSONedit_0_9_32_2.zip
- FIXED: 0.9.32 issue with color for value edit in tree view always reset to default after switching nodes or if floating point value was validated
- FIXED: 0.9.32 issue with editing floating point values on systems with locale settings using other decimal separator than "."; for consistency dot is now used as decimal separator all the time
- added option to copy node(s) path (tree and list views) in a form of JSONPath dot notation or bracket notation
- added hints to comment edits explaining that // or /* */ comment marks are required
- 2019.10.30 Version 0.9.33 JSONedit_0_9_33.zip
- tree view: added setting to use extended description for object nodes, with values of some child nodes added to parent node caption; this might help distinguish array nodes without expanding them
- option to specify up to 3 names of preferred child nodes (e.g. ID, description, ...)
- option to use only child nodes with names from preferred set
- tree view: new opt-in feature: navigation panel showing current location in the tree and allowing to jump to parent/grandparent/etc.
- tree view: added setting specifying maximum number of nodes visible after auto/default expand (previously: fixed at 30)
- Fixed: dialog for adding new node in list view contained extra newline in default node name
- File menu: added "Copy to clipboard" -> "full file path" / "file name"
- tree view: added setting to use extended description for object nodes, with values of some child nodes added to parent node caption; this might help distinguish array nodes without expanding them
- 2020.08.26 Version 0.9.34 JSONedit_0_9_34.zip
- tree view context menu: added options "Copy as compact JSON" (visible if formatting is set to "styled" in settings or "Named object copy" is used) and "Copy as styled JSON" (visible if formatting is set to "compact" in settings)
- increased number of snippets from 10 to 20
- snippets: added option to copy snippet to clipboard
- snippets: added option to change snippet name (description)
- settings window: additional description for button associating .json files with application
- list view: column widths are stored in settings; range limited to 50...2000
- changed "Clone node" dialog: default number = 1, number can be selected from list or entered manually
- FIXED: incorrect handling of floating point values by relaxed JSON parser and CSV-based array generator; broken since 0.9.32 when these values were changed to being held as strings
- list view: if "Whole text" is not checked - numbers are matched also by substrings
- 2020.10.28 Version 0.9.35 JSONedit_0_9_35.zip
- text view: add option to disable brace matching (highlighting)
- alternative, stream-based formatting is used if text could not be formatted in "regular" way as it is not a valid JSON
- added tSIP buttons configuration JSON examples
- new subeditor for arrays of objects
- table view with columns corresponding to names of object elements; <N/A> displayed for array elements not being objects
- double click or [Enter] cell to start editing
- [Enter], [Up]/[Down] or select another cell to confirm edit, [Esc] to abort editing
- "reuse tree" option might be recommended when using editor modes alternatively
- setting to keep previous node type when editing or determine type automatically (like in-line tree value editor with F4 hotkey)
- nested objects and arrays are not handled at the moment (only value type is displayed, although if "automatic node type" is selected they can be changed to simple value)
- using same colors from configuration (now named "Node colors") as tree and list views
- new hotkey type: show array editor
- tree context menu: "Array generator" renamed to "Array tools", holding previous array generator tools and newly added subeditor
- 2020.12.30 Version 0.9.36 JSONedit_0_9_36.zip - mostly suggestions from David Spector
- hotkey settings: width of action type combobox changes depending on selected type (wider for types other than script)
- removed default shortcuts/hotkeys for adding sibling and child to node in tree view; these shortcuts are now opt-in and configurable
- added new action types to hotkey configuration: adding sibling and child nodes in tree view
- fixed Tab order between basic node value edit panel and (optional) node comment edit panel
- after adding new node sibling/child node name (or node text value for array elements) is focused
- changed Lua AddNodeAsSibling function - function takes now two arguments, node name (if applicable) and value - JSON text (previously: on value, node name was always default "<add name>" text)
- Lua AddNodeAsSibling(name, value) inserts new node right after selected node, not at the end
- Lua script window: added AddNodeAsSibling example to help
- tree editor settings: added selection which action would use Ctrl+V shorcut (paste as child or paste as sibling)
- added new action types to hotkey configuration: pasting in tree as sibling and as child
- added new action types to hotkey configuration: changing node type in tree view
- added Lua BringToFront() function - to be used within scripts started by global hotkeys, e.g. combined with fetching file with curl
- fixed problem with keyboard handling when entering script file name to hotkey configuration
- added luacheck integration to Lua editor window (as in tSIP)
- 2021.03.18 Version 0.9.37 JSONedit_0_9_37.zip
- added option to use relaxed parser for text pasted from clipboard ("JSON" settings tab)
- fixed extended object node description disappearing from view after deleting or reordering array element(s)
- tree view: focusing main panel instead of editor by default
- added "Cut node"/Ctrl+X to tree view
- file association: changed "JSONedit File" name to "JSON File"
- new, higher resolution icons from YoYoK3nny; separate icon associated with file
- relaxed parser accepts also strings quoted with single quote (like in javascript)
- added "Copy node with optional key quoting" to tree context menu (copying in javascript-like style, with no quotation around object keys if they are not needed)
- decluttering tree view popup menu - new settings for popup menu visiblity are added, few less used and newest items are hidden with default configuration but can be manually enabled
- changed order of items in tree view popup menu
- added "Wrap" -> "in object"/"in array" to tree popup menu (opt-in menu item)
- checking if clipboard has text for "Paste as root from clipboard" function when showing tree popup menu
- NDJSON viewer: fixed paste function and moved to "Edit" menu
- NDJSON viewer: added "Load current content as array to main editor window" function
- fixed true/false value editor combobox disappearing when reducing window height
- fixed inconsistent shortcut for "Delete node" in list view
- fixed common hotkeys (Ctrl+C/Ctrl+V/...) working incorrectly (executing actions from tree view) in script editor window
- 2021.10.12 Version 0.9.38 JSONedit_0_9_38.zip
- tree/text search dialog is now modal
- new settings for search dialog: always on top, transparency level, transparency when deactivated
- changed default show/hide settings for tree context menu items from opt-in to opt-out
- new function: Tools / Copy node as C literal (text to C-like string conversion)
- added "Reformat" button to relaxed parser window
- 2022.03.15 Version 0.9.39 JSONedit_0_9_39.zip
- added some jsoncons tools (with JSONedit_jsoncons.dll, binary is included in main zip)
- JSONPath evaluation
- JMESPath evaluation
- JSON Merge Patch
- JSON Patch
- some refactoring to make it easier to manage multiple editor components and MRU lists
- added some jsoncons tools (with JSONedit_jsoncons.dll, binary is included in main zip)
- 2023.02.18 Version 0.9.40 JSONedit_0_9_40.zip
- FIXED: if tree node reusing option was selected, "Replace/modify node" in list view was causing object children to disappear instead of being replaced
- FIXED: editing node from list view with inline editor was likely to change same time also node currently selected in the tree view
- Tools / JSON Schema (with JSONedit_jsoncons.dll)
- separate Schema window with typical File menu, MRU list, accepting dropped files
- validating document with JSON Schema draft 7
- validation result list with keyword name, location in document and message
- extra context menu items in Schema tree view for setting/changing types and inserting common JSON Schema keywords
- removed unnecessary trailing newline from text generated by "Copy node as C literal"
- Settings/JSON: option to use JsonCpp expression format for "Copy node path" function
- some fixes for C++ class generator
- new hotkey action types:
- show Tools / JSON Schema window
- validate with Tools / Schema
- 2023.08.26 Version 0.9.41 JSONedit_0_9_41.zip
- copied fixes for global hotkey from https://github.com/tomek-o/tSIP/commit/c5e96a157328359bce3fe4648cae1a6b64f1a019
- fixed possible incorrect array elements ordering if reloading file with "tree reuse" option enabled
- fixed possible incorrect object elements ordering when reloading file if JSON is set to preserve object elements order and "tree reuse" option is enabled; this might make reloading slower in some cases
- Lua editor / Help: added list of custom Lua functions (factory-based pattern like in tSIP or VideoPlayerMpv)
- delaying creation of few tool windows until they are needed for the first time
- NDJSON viewer: added File / Reload menu item
- added new hotkey action types: copy document to clipboard as formatted and as compact text
- removed unnecessary trailing newline from JSON generated with compact formatting
- 2024.02.19 Version 0.9.42 JSONedit_0_9_42.zip
- added options to modify some of the menu shortcuts (allowing to redefine them as user hotkeys)
- fixed renaming array elements on the tree after adding/removing elements if extended node description option was used
- added new setting, "JSON"/"Emit raw UTF-8 characters (instead of escaping as hex codes)", enabled by default - keeping backward compatibility
- added new hotkey type: get node(s) path(s) (tree or list)
- added new setting, "JSON"/"Always write arrays as multiline in generated JSON"