diff options
Diffstat (limited to 'src/tools/json-viewer/json-viewer.vue')
-rw-r--r-- | src/tools/json-viewer/json-viewer.vue | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/tools/json-viewer/json-viewer.vue b/src/tools/json-viewer/json-viewer.vue index 00af91d..a460643 100644 --- a/src/tools/json-viewer/json-viewer.vue +++ b/src/tools/json-viewer/json-viewer.vue @@ -24,25 +24,21 @@ <script setup lang="ts"> import TextareaCopyable from '@/components/TextareaCopyable.vue'; import { useValidation } from '@/composable/validation'; +import { withDefaultOnError } from '@/utils/defaults'; +import JSON5 from 'json5'; import { computed, ref } from 'vue'; const inputElement = ref<HTMLElement>(); const rawJson = ref('{"hello": "world"}'); -const cleanJson = computed(() => { - try { - return JSON.stringify(JSON.parse(rawJson.value), null, 3); - } catch (_) { - return ''; - } -}); +const cleanJson = computed(() => withDefaultOnError(() => JSON.stringify(JSON5.parse(rawJson.value), null, 3), '')); const rawJsonValidation = useValidation({ source: rawJson, rules: [ { - validator: (v) => v === '' || JSON.parse(v), - message: 'Invalid json', + validator: (v) => v === '' || JSON5.parse(v), + message: 'Provided JSON is not valid.', }, ], }); |