App.svelte
<script>
import JsonItem from './JsonItem.svelte'
const json = JSON.stringify({
a: 1, b: [2,3,4,5], c: {d: 'A', e: 'B'}, f: 'Hello', g: {h: [6,7,8], i: 9}
})
</script>
<JsonItem {json}/>
JsonParser.svelte
<script>
export let json
export let key = "JSON"
const obj = JSON.parse(json)
let expanded = false
const entries = Object.entries(obj)
const type = Object.prototype.toString.call(obj) // 객체 타입을 알 수 있음
let value = 0
if (type === '[object Array]') {
value = `Array[${entries.length}]`
} else if (type === '[object Object]'){
value = `Object[${entries.length}]`
}else {
value = json
}
</script>
<div>
<b>{key}</b> : <span on:click={() => expanded = !expanded}> {value} </span>
{#if expanded}
{#each entries as [key, value], index(index)}
<svelte:self {key} json={JSON.stringify(value)}/>
{/each}
{/if}
</div>
<style>
div {margin: 10px 0 0 14px}
</style>
Result
'생계유지형 개발자 > JS Framework' 카테고리의 다른 글
[webpack5] HtmlWebpackPlugin 사용하여 html 번들링 시 js 골라서 삽입하기 (0) | 2023.01.20 |
---|---|
[Svelte] .env 빌드환경 설정 및 프로퍼티 사용하기 (dotenv, rollup) (0) | 2022.07.06 |
[Svelte] Motion - tweened, spring example (0) | 2022.06.23 |
[Svelte] 기초저ㄱ인 nput 태그 다루기 (0) | 2022.06.15 |
[svelte 기초] 자식 컴포넌트에서 부모 컴포넌트로 이벤트 발생시키기 (= Vue.$emit) (0) | 2022.06.15 |