質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Q&A

解決済

6回答

1628閲覧

投稿者が削除しました

re97

総合スコア208

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

0グッド

0クリップ

投稿2016/02/22 02:37

編集2016/02/24 23:35

2016/2/25。質問内容を修正できないため、投稿者が一旦削除しました

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

ベストアンサー

質問者様がおっしゃるように、たとえばChromeで「意図しているJSONイメージ」のリンク先を開いてコンテキストメニューから「名前を付けて保存」しようとすると"失敗 - サーバーに問題が~"となります。これは、
このリンク先のページの応答コードが500なのです。そして応答の内容、ボディー部がJSONなのです。

これを利用してWebアプリ側で常に異常系のエラーコードを返し、内容は意味のあるJSONにすれば同じようなことはできますが、他の皆さまのご回答の通りあまりよいことではないでしょう。

投稿2016/02/22 03:45

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

re97

2016/02/22 10:30

・質問修正しました ・(エラーテストのため)下記を試すには、何をどう記述すれば良いでしょうか? >このリンク先のページの応答コードが500なのです。そして応答の内容、ボディー部がJSONなのです。
guest

0

みなさんすでに書かれていますが、そもそもダウンロード完了した時点で画面に表示されているので、ダウンロードさせない=公開しない、ということになってしまいます。

ただ、保存させたくないという話が出ることはよくあることだと思うので、

なぜ保存されると困るのか

を記載したほうが解決が早そうです。
ダウンロードされたとしても、困ることが発生しなければ問題解決となると思いますので。

投稿2016/02/22 03:17

edo_m18

総合スコア2283

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

re97

2016/02/22 10:31

・質問修正しました
guest

0

https://api.myjson.com/bins/46rrbkkojhiojiojiojio

ブラウザで表示させた状態で ctrl+s を叩けば普通に保存できます。

投稿2016/02/22 02:57

yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

re97

2016/02/22 03:00

保存しようとすると、「サーバーに問題が発生しました」とならないでしょうか?
yuba

2016/02/22 03:06

Firefoxですが、全然そんなことはありませんでしたね。
yuba

2016/02/22 03:07

あ、まさかですが、IEで保存しようとしました? 最近知ったのですが、IEは分割ダウンロードを試みます。もしサーバー側が分割ダウンロードにうまく対応できていないとおっしゃるような振る舞いになる可能性があります。
re97

2016/02/22 10:34

・Chromeだとエラーになります… >Firefoxですが、全然そんなことはありませんでしたね ・参考になりました
guest

0

状況を相当に限定しないかぎり、不可能です。

「データを閲覧できる」ということはすなわち「データの中身を取得できる」ということなので、そのデータを書き出せば保存もできることになってしまいます。

JSONの中身をPNGファイルに描画するとかで閲覧専用にして再利用を困難にすることはできるかもしれませんが、「JSONデータとして使える」ことと「中身を保存できること」は限りなく等しいので、「データとして使えるけど保存できない」という状態にするのは難しいです。

投稿2016/02/22 02:43

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

re97

2016/02/22 02:56

回答ありがとうございます。本文に補足追記しました
ogaaaan

2016/02/22 03:00

maisumakunさんのおっしゃるとおり、できないと思いますよ。 ブラウザで見れるということは、 データがダウンロードされてるということです。 見ている人のマシン内にあるデータは、 見ている人が(知識があれば)ファイルにできちゃいますし、 ブラウザがある程度までやってくれちゃいます。
re97

2016/02/22 10:35

・質問修正しました
guest

0

maisumakunさんの回答が全てを語っていますが、
閲覧用には画像を用意、データ用のはJSONファイルを用意する。
閲覧用のURLは別途案内する。
ただ書かれている用に、画像にしたとしても、手打ちでコピーすれば再利用可能なわけです。

で、データ用のJSONファイルですが、これはWebサーバーに配置するのではなく、
APサーバー内に配置し、*.json にリクエストがきた場合にフィリタリング処理を行うことで、
アクセス制限を多少上げることはできそうですね。

例えば特殊なリクエストヘッダが付与されている場合や、ログインされている場合のみ、
JSONへのアクセスを許可し、アプリ上で application/json のレスポンスを返すなど。
逆に上記のような条件を満たしているリクエストの場合は、JSONが丸見えということですが。。。

しかも、Ajaxでこれをやろうとすると、スクリプトのソースはユーザーに丸見えなわけですから、
ヘッダに何を設定すればいいかなど、ソースを解析されれば小細工はバレます。。。

投稿2016/02/22 03:15

root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

re97

2016/02/22 10:32

・質問修正しました
guest

0

・意図しているJSONイメージ

何の問題もなく保存できますよ。
そもそも「ブラウザで表示=ダウンロード」ですよ。

メジャーではないなんらかの特定のブラウザでブラウザ独自機能を使ったり、ブラウザにアドインを強制的に組み込んだりすれば可能かも知れません。

投稿2016/02/22 03:10

otn

総合スコア84533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

re97

2016/02/22 10:32

・質問修正しました
otn

2016/02/22 12:48

> ユーザが「閲覧可能だが、保存はできないjsonファイル」を作成したいのですが、どうすれば良いでしょうか? それは無理です。再度書きますが、「ブラウザで表示=ダウンロード」です。
re97

2016/02/23 00:54

当初の質問は最終的に知りたかったことではないので、削除しました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問