programing

JSON에서는 여러 줄의 스트링을 사용할 수 있습니까?

showcode 2023. 3. 11. 09:38
반응형

JSON에서는 여러 줄의 스트링을 사용할 수 있습니까?

JSON에서 여러 줄의 문자열을 사용할 수 있습니까?

대부분 시각적인 편안함 때문에 편집기에서 워드랩을 켜면 될 것 같은데 좀 궁금해서요.

데이터 파일을 JSON 형식으로 쓰고 있는데, 정말 긴 문자열 값을 여러 줄로 나누고 싶습니다.하면 Python의 JSON을 하지 않든합니다.\ ★★★★★★★★★★★★★★★★★」\n탈출구로서.

JSON 에서는, 실제의 회선 브레이크는 허가되지 않습니다.모든 줄 바꿈을 다음과 같이 교환해야 합니다.\n.

예:

"first line second line"

저장할 수 있는 항목:

"first line\nsecond line"

주의:

for 위해서Python, , this should be written as:, 이것은 다음과 같이 기술해야 합니다.

"first line\\nsecond line"

어 어디 있죠?\\ is for escaping the backslash, otherwise python will treat 백슬래시를 탈출하기 위한 것입니다.그렇지 않으면 python이 치료합니다.\n as the control character "new line"제어 문자 "new line"으로 지정

안타깝게도 이 답변의 대부분은 문자열 데이터에 줄 바꿈 문자를 넣는 방법에 대한 질문을 다루고 있습니다.문제는 문자열 값을 코드의 여러 줄에 걸쳐 분할함으로써 코드를 더 아름답게 보이게 하는 방법입니다(그리고 이를 인식하는 응답조차도 데이터 표현을 자유롭게 변경할 수 있다고 가정하는 "솔루션"을 제공하지만 대부분의 경우 그렇지 않습니다).

그리고 더 나쁜 소식은 좋은 답이 없다는 것이다.

많은 프로그래밍 언어에서 스트링 분할을 명시적으로 지원하지 않더라도 원하는 효과를 얻기 위해 스트링 연결을 사용할 수 있습니다. 컴파일러가 형편없지만 않으면 괜찮습니다.

그러나 json은 프로그래밍 언어가 아니라 데이터 표현일 뿐입니다.줄을 연결하라고 하면 안 돼요.또한 (매우 작은) 문법은 문자열을 여러 줄에 나타내는 기능을 포함하지 않습니다.

어떤 종류의 프리프로세서를 고안하는 것(그리고 저는 이 문제를 해결하기 위해 효과적으로 제 언어를 만들고 싶지 않습니다) 외에는 이 문제에 대한 일반적인 해결책은 없습니다.데이터 형식을 변경할 수 있는 경우 문자열 배열을 대체할 수 있습니다.그렇지 않으면 json이 사람이 읽을 수 있도록 설계되지 않은 수많은 방법 중 하나입니다.

작은 Node.js 프로젝트에서 이 작업을 수행해야 했습니다.다행 문자열을 행 배열로 저장하여 사람이 읽기 쉽게 하기 위한 다음 회피책을 찾았습니다(나중에 문자열로 변환하려면 추가 코드가 필요합니다).

{
 "modify_head": [

  "<script type='text/javascript'>",
  "<!--",
  "  function drawSomeText(id) {",
  "  var pjs = Processing.getInstanceById(id);",
  "  var text = document.getElementById('inputtext').value;",
  "  pjs.drawText(text);}",
  "-->",
  "</script>"

 ],

 "modify_body": [

  "<input type='text' id='inputtext'></input>",
  "<button onclick=drawSomeText('ExampleCanvas')></button>"
 
 ],
}

Once parsed, I just use 일단 파싱이 되면 저는 그냥myData.modify_head.join('\n') or 또는myData.modify_head.join()각 문자열 뒤에 줄 바꿈이 필요한지 여부에 따라 달라집니다.

제가 보기엔 꽤 깔끔해 보이는데, 큰따옴표를 어디에나 써야 하거든요.그 외에는 YAML을 사용할 수 있지만, 다른 함정이 있어 네이티브에서는 지원되지 않습니다.

사양 확인!JSON 문법의 char 생성에는 다음 값을 사용할 수 있습니다.

  • any-Unicode-character-except-"... -아니면...\ "
  • \"
  • \\
  • \/
  • \b
  • \f
  • \n
  • \r
  • \t
  • \u 사방팔방식의

컨트롤 캐릭터, ,, 의, 의, 의, 의, 의, ,, 습, ,, 습, 습, it, it, it, it, it, it, it, it,\n ★★★★★★★★★★★★★★★★★」\r필요한 경우.

JSON은 읽기 쉽도록 구분선을 허용하지 않습니다.

가장 좋은 방법은 줄 바꿈 IDE를 사용하는 것입니다.

이것은 매우 오래된 질문이지만, 저는 이것을 검색하다가 발견했고, 저는 당신의 문제의 근원을 알 것 같습니다.

JSON은 데이터에 "실제" 줄바꿈을 허용하지 않습니다. 줄바꿈만 이스케이프할 수 있습니다.@YOU의 답변을 참조하십시오.질문에 따르면 Python에서 줄 바꿈을 회피하려고 시도한 것 같습니다.줄 바꿈 문자를 사용하여 ( )"\" ( )를 합니다."\n"탈출구로서.

python에서 문자(「, python」, 「python에 주의해 주세요."\t","\n" 컨트롤 "\n"줄 바꿈 문자는 줄 바꿈 문자를 나타내는 ASCII 제어 문자로 대체됩니다(줄 바꿈 문자는 줄 바꿈 문자만 해당).

그래서 당신이 해야 할 일은 Python의 문자 유출을 막는 것이다. 문자열 raw raw raw 스트링(put)은 raw 스트링(put)을 합니다.rr"abc\ndef"줄바꿈 를 참조해 주세요)."abc\\ndef"를 참조해 주세요.

「」를 치환하는 , 「」를 치환합니다."\n"줄 ASCII 제어 하여 ASCII를 남깁니다."\n"2년 전이 경우 JSON은 줄 바꿈 이스케이프로 해석할 수 있습니다.

속성 값을 문자열 배열로 씁니다.여기 https://gun.io/blog/multi-line-strings-in-json/에 나와 있는 예시와 같습니다.이게 도움이 될 거야.

다음과 같이 여러 줄의 문자열 배열을 사용할 수 있습니다.

{
    "singleLine": "Some singleline String",
    "multiline": ["Line one", "line Two", "Line Three"]
} 

또, 어레이를 간단하게 반복해 컨텐츠를 멀티 라인 방식으로 표시할 수 있습니다.

표준이 아니지만 일부 JSON 라이브러리에는 여러 줄의 문자열을 지원하는 옵션이 있습니다.이것은, 상호 운용성을 해칠 우려가 있는 경고와 함께 말하고 있습니다.

다만, 특정의 시나리오에서는, 지금까지 1대의 시스템으로만 사용되고 있던 설정 파일을, 사람이 판독해 관리할 수 있도록 할 필요가 있었습니다.그리고 결국 이 솔루션을 선택했습니다.

Java와 Jackson의 동작은 다음과 같습니다.

JsonMapper mapper = JsonMapper.builder()
   .enable(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS)
   .build()

이것은 매우 오래된 질문이지만, 복잡한 조건식을 사용하는 베가 JSON 사양 코드의 가독성을 향상시키고 싶을 때도 같은 질문을 했습니다.코드는 이렇습니다.

답변에서 알 수 있듯이 JSON은 인간을 위해 설계되지 않았습니다.이것은 과거의 결정이며, 데이터 교환을 목적으로 하는 것이 타당하다는 것을 이해하고 있습니다.단, 이러한 경우 JSON은 여전히 소스 코드로 사용됩니다.그래서 저는 엔지니어들에게 Hjson을 소스 코드로 사용하여 JSON으로 처리해 달라고 요청했습니다.

예를 들어 Git for Windows 환경에서는 Hjson cli 바이너리를 다운로드하여 git/bin 디렉토리에 저장하여 사용할 수 있습니다.다음으로 변환(변환)Hjson 소스로부터 JSON으로Make와 같은 자동화 도구를 사용하면 JSON을 생성할 때 유용합니다.

$ which hjson
/c/Program Files/git/bin/hjson

$ cat example.hjson
{
  md:
    '''
    First line.
    Second line.
      This line is indented by two spaces.
    '''
}

$ hjson -j example.hjson > example.json

$ cat example.json
{
  "md": "First line.\nSecond line.\n  This line is indented by two spaces."
}

변환된 JSON을 프로그래밍 언어로 사용하는 경우 hjson-js와 같은 언어별 라이브러리가 유용합니다.

중복된 질문에도 같은 아이디어가 게재되어 있는 것을 알 수 있었습니다만, 조금 더 많은 정보를 공유하겠습니다.

클라이언트측에서 인코딩하고 서버측에서 디코딩할 수 있습니다.이렇게 하면 \n 및 \t 문자도 처리됩니다.

예: json을 통해 여러 줄의 xml을 전송해야 했습니다.

{
  "xml": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CiAgPFN0cnVjdHVyZXM+CiAgICAgICA8aW5wdXRzPgogICAgICAgICAgICAgICAjIFRoaXMgcHJvZ3JhbSBhZGRzIHR3byBudW1iZXJzCgogICAgICAgICAgICAgICBudW0xID0gMS41CiAgICAgICAgICAgICAgIG51bTIgPSA2LjMKCiAgICAgICAgICAgICAgICMgQWRkIHR3byBudW1iZXJzCiAgICAgICAgICAgICAgIHN1bSA9IG51bTEgKyBudW0yCgogICAgICAgICAgICAgICAjIERpc3BsYXkgdGhlIHN1bQogICAgICAgICAgICAgICBwcmludCgnVGhlIHN1bSBvZiB7MH0gYW5kIHsxfSBpcyB7Mn0nLmZvcm1hdChudW0xLCBudW0yLCBzdW0pKQogICAgICAgPC9pbnB1dHM+CiAgPC9TdHJ1Y3R1cmVzPg=="
}

서버 측에서 디코딩합니다.

public class XMLInput
{
        public string xml { get; set; }
        public string DecodeBase64()
        {
            var valueBytes = System.Convert.FromBase64String(this.xml);
            return Encoding.UTF8.GetString(valueBytes);
        }
}

public async Task<string> PublishXMLAsync([FromBody] XMLInput xmlInput)
{
     string data = xmlInput.DecodeBase64();
}

디코딩이 완료되면 원본 xml을 얻을 수 있습니다.

<?xml version="1.0" encoding="utf-8" ?>
  <Structures>
       <inputs>
               # This program adds two numbers

               num1 = 1.5
               num2 = 6.3

               # Add two numbers
               sum = num1 + num2

               # Display the sum
               print('The sum of {0} and {1} is {2}'.format(num1, num2, sum))
       </inputs>
  </Structures>

\n\r\n★★★★★★★★★★★!!

\n 줄 및 " " "의 \n\r\n 라인

여기에서는 대부분의 경우 동작하지 않지만 JSON 파일에 적어둔 것을 출력하는 경우(예를 들어 클라이언트에1개 이상의 행이 출력되는 언어 번역의 경우)에는 선택한 PS의 특수 문자를 추가하는 만으로 가장 쉬운 해결책이 될 수 있습니다.y개의 JSON 파일은 다음과 같습니다.\\JS는 다음예를 들어 다음과 같습니다.

예를 들어:

파일(text.json)

{"text": "some JSON text. \\ Next line of JSON text"}

import text from 'text.json'
{text.split('\\')
.map(line => {
return (
   <div>
     {line}
     <br />
   </div>
     );
})}}

이 질문이 텍스트 파일을 쉽게 편집하고 수동으로 json으로 변환하는 것과 관련이 있다고 가정하면 다음 두 가지 해결책이 있습니다.

  1. hjson(이 답변에서 언급)을 실행하면 기존 json 파일을 hjson 형식으로 변환할 수 있습니다.hjson source.json > target.hjson편집기에서 hjson -j target.hjson > source.json여기서 바이너리를 다운로드하거나 여기서 온라인 변환을 사용할 수 있습니다.
  2. jsonnet은 동일하지만 형식이 약간 다릅니다(단일 따옴표로 묶은 문자열과 이중 따옴표로 묶은 문자열은 여러 줄에 걸쳐 사용할 수 있습니다).홈페이지에는 편집 가능한 입력 필드가 있기 때문에 여러 줄의 json/jsonnet 파일을 삽입하기만 하면 온라인으로 즉시 표준 json으로 변환됩니다.jsonnet은 json 파일을 템플링할 때 훨씬 더 많은 기능을 지원하므로 필요에 따라 알아보는 것이 유용할 수 있습니다.

에디터에서의 프레젠테이션만을 목적으로 하고 있는 경우는, 「」또는 「」 대신에 「」를 사용할 수 있습니다.

const obj = {
myMultiLineString: `This is written in a \
multiline way. \
The backside of it is that you \
can't use indentation on every new \
line because is would be included in \
your string. \
The backslash after each line escapes the carriage return. 
`
}

예:

console.log(`First line \
Second line`);

콘솔로 이동합니다.
줄 두 줄

console.log(`First line 
second line`);

콘솔로 이동합니다.
줄 first 、 [ ]
번째 줄 " " "

이게 당신의 질문에 답하길 바랍니다.

언급URL : https://stackoverflow.com/questions/2392766/are-multi-line-strings-allowed-in-json

반응형