複数行のJSON文字列

私が使用しているJSONをいくつかのデータファイル形式を書くこと、および複数行にいくつかの非常に長い文字列値を維持したいです。JSON Iを使用してPythonモジュールは、私が使用しているもののミスに関係なく、多くの取得\\\\n脱出などを。

あなたはJSONで複数行の文字列を使用できますか?これは、視覚の快適さのために主にあるので、私は、私は私のエディタをラップ回すことができると思うが、私は好奇心が強い......


#1階

これは非常に古い問題ですが、検索するときに、私はこの問題に遭遇し、私は問題の原因を知っていると思います。

JSONは「本物の」改行でのデータの使用を許可していません。それだけでラップを逃れることができます。参照してください@YOUに答えを行継続文字(使用:この問題によると、それはあなたがPythonで改行二つの方法で脱出しようとしたように見える"\\")、または使用"\\n"エスケープなどを。

しかし、覚えている:あなたは、文字列を使用する場合は、Pythonで特殊なエスケープ文字は("\\t"、)"\\n"REAL制御文字に変換されます!"\\n"交換はJSON不正な文字であることを起こる改行ASCII制御文字、です。(行継続文字としては、それだけでラップする必要があります。)

あなたがする必要があるので、エスケープ文字Pythonのを防ぐためです。あなたは、元の文字列を使用することができる(するrなど、文字列の前に配置するr"abc\\ndef"(追加や改行の前にスラッシュを追加し、"abc\\\\ndef"これを実行します)。

二つの方法上記ません"\\n"真の改行のASCII制御文字を置き換えるのではなく、"\\n"テキストのように2つの文字は、その後、JSONは改行として解釈することができます。


ハウス#2

見る仕様をJSON文法char型の生成は、以下の値をとることがあります。

  • 任意のUnicode対応文字-except- "-または\\-OR制御文字
  • \\"
  • \\\\
  • \\/
  • \\b
  • \\f
  • \\n
  • \\r
  • \\t
  • \\u\u003c/code> 四个十六进制数字

换行符是“控制字符”,所以不,你的字符串中可能没有文字换行符。 但是,您可以使用\\n\\r \\n所需的任何组合对其进行编码。


ハウス#3

TXTファイルに複数行のテキスト、その後、

var str = {
    text: cat('path_to_file/text.txt')
}

(これは、MongoDBの上で実行されます)


#4階

JSONは、実際の改行を許可していません。あなたは必要な\\nすべての改行を交換します。

例えば:

"first line second line"

あなたは、保存することができます:

"first line\\nsecond line"

注意:

以下のためにPython、これは次のように記述する必要があります。

"first line\\\\nsecond line"

これは\\\\、バックスラッシュをエスケープするために使用され、それ以外のpythonの意志\\n制御文字「改行」など


ハウス#5

正規表現を使用すると、すべて表示されます\\r\\n置き換えます\\\\n

これはScalaで私に便利です。

val newstr = str.replace("\r\n", "\\n")

ハウス#6

JSONは、改行が読みやすさを改善することはできません。

最良の方法は、あなたがラップすることができIDEを使用することです。


#7の構築

プロパティ値は、文字列配列として書き込まれます。ここに挙げた例のようにhttps://gun.io/blog/multi-line-strings-in-json/これが役立ちます。

下図のように私たちは常に、複数行の文字列として文字列の配列を使用することができます。

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

我々は簡単にマルチラインモードで反復配列の内容を表示することができます。


#8の構築

あなたはJSONで複数行の文字列を使用できますか?

はい。私は、画面の下部にある、このうち、プレスF12をテストするために、私のFirefox Webブラウザを使用して、コンソール入力をクリックしてください。

x={text:"hello\nworld"}

ただ、オブジェクトxから複数行の文字列を作成するために、JSON形式の文字列が含まれています。

console.log(x.text)
hello
world

複数行の表示文字列で表示x.text、。

両方のテストは、FirefoxのJavaScriptインタプリタは複数行の文字列を作成し、JSONを使用させていただきます、ということを示しています。

使用JSON.stringifyとはJSON.parse、より多くのテストが示す実施JavaScriptインタープリタは、全く問題をJSON文字列にオブジェクトの複数の行が含まれていないと、再びそれを解析することができます。

私はJSONオブジェクトのプロパティとしてシェイクスピアのすべての作品を保存するために使用して、インターネット経由で送信、損傷はありません。

これは、3本のラインを介して文字列入力の2行です

x={text:"expert\
s\nex\
change"}

私たちは、オブジェクトを表示することができます

console.log(x)

Object { text: "experts\nexchange" }

または文字列

console.log(x.text)

experts
exchange

行最終用途\\ N、及び複数\\達成するための唯一の入力ラインを使用して、行の末尾の文字列。

実際には、あなたがたとえば、行の文字列の行末の終わりと同期することがあり、

x={text:"experts\n\
exchange"}

複数行の文字列の長さ

console.log("Hello\nWorld".length)
11 
console.log("Hello World".length)
11

スペースを含む文字列より、もはや改行を含む文字列がありますのでご注意ください。2つの文字は、キーボードでタイプされた場合であっても(「\\」と「N」)、文字列が一つだけの文字を格納しています。


ハウス#9

使用json5(ローダ)を参照してくださいhttps://json5.org/を - (json5による)の例

{
  lineBreaks: "Look, Mom! \
No \\n's!",
}

ハウス#10

使用してみてくださいbase64値エンコードされた文字列を。ほとんどの時間は、私のために働い。

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

base64ような文字列エンコードされたルックス

{
    "singleLine": "Some singleline String",
    "multiline": "TGluZSBvbmUKTGluZSBUd28KTGluZSBUaHJlZQ=="
} 

base64でエンコードすると、すべての言語で利用可能デコード。


ハウス#11

残念ながら、ここでの回答の多くは、データの問題の文字列に改行を追加する方法を解決しています。質問は、コードの見た目を改善するために、複数のラインでの文字列のコード値を分割する方法です。(でもこの答えを知っても「ソリューション」を提供した人が、データを変更して自由であると仮定し、多くの場合、人々は行わないことを言いました。)

さらに悪いことに、何の良い答えはありません。

多くのプログラミング言語では、彼らは明示的にサポートされていない場合でも、銀行間では、あなたはまだ所望の効果を得るために、文字列の連結を使用することができます文字列を分割、限りコンパイラは、非常に悪いわけではないのは良いことのように。

しかし、JSONは、プログラミング言語ではありません。それだけでデータ表現です。あなたは、接続文字列にそれを伝えることはできません。それの(比較的小さい)構文は、すべてのツールがために複数行の文字列を表す含まれていません。

いいえ、この問題に対する一般的な解決策は存在しない(1のために、私はそれが効果的に問題を解決するために自分自身の言語を書くことができないと思うし、)プリプロセッサのいくつかのタイプを設計します。あなたは、データ形式を変更することができた場合は、文字列の配列を置き換えることができます。そうでなければ、これは、人間の読みやすさのために設計されていませんJSON多くの方法の一つです。


ハウス#12

あなたはNode.jsのを使用することを好む場合は、この操作を行うことができます。

module.exports = {

  multilineStr: `

     dis my life 
     it's now or never

  `

}

あなたは、Node.jsのインポートを使用して簡単にJSONに変換することができます:

echo `node -pe 'JSON.stringify(require("./json-mod.js"))'`

あなたが得ます:

{"multilineStr":"\n \n dis my life\n it's now or never\n \n "}

どのように動作します:あなたは、Node.jsのロードJSモジュールを使用し、それは簡単のNode.jsの文字列にすることができますJSオブジェクトを作成します。-eオプションの評価文字列-pオプションは、Node.jsの操作の最終結果が標準出力にエコー戻ります。

あなたが別の作業ディレクトリにある負荷の.jsスクリプトにしたい場合は、「文字列「を切り替える」と」必要があります。

my_script='../json-mod.js'
echo `node -pe "JSON.stringify(require('$my_script'))"`

ハウス#13

私は小さな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>"

 ],
}

私の周りに二重引用符を使用する必要がありますので、これは、私にとって本当にきちんと見えます。ではないが、私はYAMLを使うかもしれないが、そこに他の落とし穴があり、対応していません。解析した後、私はのみ使用myData.modify_head.join('\\n')またはmyData.modify_head.join()私は各文字列の後にラップするかどうかに応じて、。

オリジナルの記事は、0公表 ウォンの賞賛0 ビュー2203

おすすめ

転載: blog.csdn.net/p15097962069/article/details/103934974
おすすめ