JSON内にHTML文字列を書くことは可能ですか?
私のJSONファイルに以下のように書きたいもの:
[
{
"id": "services.html",
"img": "img/SolutionInnerbananer.jpg",
"html": "<h2class="fg-white">AboutUs</h2><pclass="fg-white">developing and supporting complex IT solutions.Touchingmillions of lives world wide by bringing in innovative technology </p>"
}
]
「\」を追加して、html文字列内の二重引用符などの文字をエスケープする必要があります
例:<h2 class=\"fg-white\">
JSONにhtmlを追加する前にBase64アルゴリズムを使用してhtmlをエンコードし、読み取り時にBase64を使用してhtmlをデコードするだけです。
byte[] utf8 = htmlMessage.getBytes("UTF8");
htmlMessage= new String(new Base64().encode(utf8));
byte[] dec = new Base64().decode(htmlMessage.getBytes());
htmlMessage = new String(dec , "UTF8");
JSONでHTML文字列を記述することは可能です。二重引用符をエスケープするだけです。
[
{
"id": "services.html",
"img": "img/SolutionInnerbananer.jpg",
"html": "<h2class=\"fg-white\">AboutUs</h2><pclass=\"fg-white\">CSMTechnologiesisapioneerinprovidingconsulting,
developingandsupportingcomplexITsolutions.Touchingmillionsoflivesworldwidebybringingininnovativetechnology,
CSMforayedintotheuntappedmarketslikee-GovernanceinIndiaandAfricancontinent.</p>"
}
]
スラッシュもエスケープする必要があります。正しいJSONは次のとおりです。
[{
"id": "services.html",
"img": "img/SolutionInnerbananer.jpg",
"html": "<h2class=\"fg-white\">AboutUs<\/h2><pclass=\"fg-white\">developing and supporting complex IT solutions.Touchingmillions of lives world wide by bringing in innovative technology <\/p>"
}]
1つの方法は、HTML内の二重引用符を単一引用符に置き換えることですが、二重引用符を使用することがHTMLの属性値の標準規則になりました。
より良いオプションは、エスケープする必要のあるjsonやその他の文字の二重引用符をエスケープすることです。
エスケープの詳細については、こちらをご覧ください: JSON ajax戻り値型に必要なエスケープ文字のリストはどこにありますか
以下のHTMLをレンダリングしようとしているとしましょう。
_let myHTML = "<p>Go to this <a href='https://google.com'>website </b></p>";
_
JSON.parse(JSON.stringify(myHTML))
これは、innerHTMLを使用して設定できるHTML要素を提供します。
このようなdocument.getElementById("demo").innerHTML = JSON.parse(JSON.stringify(myHTML));
人々はHTMLをオブジェクトとして保存しています here 。ただし、私が提案した方法は、オブジェクトを使用せずに同じことを行います。
JSONにHTMLを挿入するときに行う必要がある4つのこと:
1)
<img src=\"someimage.png\" />
のようにHTML属性を囲む引用符をエスケープします2)HTML終了タグのスラッシュをエスケープします。
<div>Hello World!<\/div>.
これは、HTMLパーサーに<SCRIPT>
タグに文字列を入れるときに混乱させたくない古いHTML仕様の古代のアーティファクトです。なんらかの理由で、今日のブラウザはまだ気に入っています。3)これはまったく奇妙でした。自己終了タグでは、タグ名とスラッシュの間にスペースを入れる必要があります。これがなぜなのかわかりませんが、最新のブラウザでは、javascriptを使用して
<li>
タグを次のようにフォーマットされた順不同リストの子として追加しようとすると:<ul/>
、仕事。 ulタグの後にDOMに追加されます。ただし、コードが<ul />
(/の前のスペースに注意してください)のようであれば、すべてが正常に機能します。確かに非常に奇妙です。4)(悪い)HTMLコンテンツに含まれる可能性のある引用符は必ずエンコードしてください。これは、誤って文字列を早期に終了して、JSONを実際に壊す唯一のものです。 HTMLコンテンツとして含める場合は、
"
文字を"
としてエンコードする必要があります。
最も簡単な方法は、HTMLを一重引用符で囲むことです。変更されたjsonオブジェクトは次のとおりです。
[
{
"id": "services.html",
"img": "img/SolutionInnerbananer.jpg",
"html": '<h2 class="fg-white">AboutUs</h2><p class="fg-white">developing and supporting complex IT solutions.Touchingmillions of lives world wide by bringing in innovative technology </p>'
}
];
フィドル 。
そして、最善の方法は、二重引用符やエスケープする必要のある他の文字をエスケープすることです。変更されたjsonオブジェクトは次のとおりです。
[
{
"id": "services.html",
"img": "img/SolutionInnerbananer.jpg",
"html": "<h2 class=\"fg-white\">AboutUs</h2><p class=\"fg-white\">developing and supporting complex IT solutions.Touchingmillions of lives world wide by bringing in innovative technology </p>"
}
];
フィドル 。
jsonではすべてが二重引用符「」の間の文字列ですので、値に発生する場合はエスケープが必要です(直接書き込みのみ)バックスラッシュを使用してください\
jsonファイルの{}でラップされたものはすべて、jsonを
{
[
{
"id": "services.html",
"img": "img/SolutionInnerbananer.jpg",
"html": "<h2 class=\"fg-white\">AboutUs</h2><p class=\"fg-white\">developing and supporting complex IT solutions.Touching millions of lives world wide by bringing in innovative technology</p>"
}
]
}
識別子をクエリセレクターのパラメーターにすることができます。 PHPおよび互換性のある言語では、連想配列(実際にはオブジェクト)を使用してからjson_encodeを使用します。
$temp=array('#id' =>array('href'=>'services.html')
,'img' =>array('src'=>"img/SolutionInnerbananer.jpg")
,'.html'=>'<h2 class="fg-white">AboutUs</h2><p class="fg-white">...</p>'
);
echo json_encode($temp);
しかし、HTMLは、JSなしではそれを行いません。
{"#id":{"href":"services.html"},"img":{"src":"img\/SolutionInnerbananer.jpg"}
,".html":"<h2 class=\"fg-white\">AboutUs<\/h2><p class=\"fg-white\">...<\/p>"}