タグ付けされた質問 「json」

JSON(JavaScript Object Notation)、別名Fa​​t Free Alternative to XMLは、JavaScriptオブジェクトリテラルに着想を得た軽量のデータ交換フォーマットです。JavaScript、Ajax、およびRESTful Webサービスでよく使用されますが、完全に言語に依存しません。

5
JSONに相当するXSLT
JSONに相当するXSLTを見つける(または必要に応じて開発する)ことに興味がありました。 私は何も見つけていないので、一致したときにテンプレートを(JavaScriptから)適用するためにJSONパスの一致に使用できるクエリ言語を考えていました(おそらく一致するパターンの配列を順番にチェックし、一致する最初のテンプレート。ただし、xsl:apply-templatesに相当するものを許可し、テンプレートを子供向けに保持します)。 JSONPath、JSONQuery、RQLをJSONクエリ言語として認識しています(ただし、RQLが絶対パスと相対パスをサポートしているかどうかは明確ではありませんでした)。考慮すべき要素に関する提案と、そのような使用法に対するそれぞれの相対的な利点。
14 javascript  json  xslt 

1
データとファイルの混合転送にmultipart / form-dataを使用するのはなぜですか?
私はC#で作業しており、作成中の2つのアプリ間で通信を行っています。Web APIとJSONが好きになりました。現在、2つのサーバー間でテキストデータとファイルを含むレコードを送信するルーチンを作成しています。 インターネットによると、ここに示すようにmultipart / form-dataリクエストを使用することになっています。 SO質問「C#クライアントからのマルチパートフォーム」 基本的に、次のような形式に従ってリクエストを手動で記述します。 Content-type: multipart/form-data, boundary=AaB03x --AaB03x content-disposition: form-data; name="field1" Joe Blow --AaB03x content-disposition: form-data; name="pics"; filename="file1.txt" Content-Type: text/plain ... contents of file1.txt ... --AaB03x-- RFC 1867-HTMLでのフォームベースのファイルアップロードからコピー この形式は、優れたJSONデータに慣れている人にとって非常に苦痛です。したがって、明らかに解決策は、JSONリクエストを作成し、Base64でファイルをエンコードして、次のようなリクエストで終わることです。 { "field1":"Joe Blow", "fileImage":"JVBERi0xLjUKJe..." } そして、好きな場所でJSONのシリアル化と逆シリアル化を利用できます。さらに、このデータを送信するコードは非常に簡単です。JSONシリアル化用のクラスを作成し、プロパティを設定するだけです。ファイル文字列プロパティは、いくつかの簡単な行で設定されます。 using (FileStream fs = File.Open(file_path, FileMode.Open, FileAccess.Read, FileShare.Read)) { byte[] file_bytes = …

2
MongoDBのキーに「。」を含むJSONドキュメントを挿入する
第一に、これはプログラミングの問題というよりも設計上の問題です。 既存のJSONデータを取得してMongoDBに挿入する必要があるアプリケーションを作成しています。一部のJSONドキュメントには.キーにピリオドが含まれていることがわかりました。MongoDBのドキュメントで.、クエリに使用されるピリオドはMongoDBのキーとして許可されていないことを読みました。 私はWebアプリケーションに多くの挿入を行いません。それはほとんど一度だけの挿入です。また、すべてのデータを取得する必要があるため、ドキュメントの一部を照会するのではなく、ほとんどの場合ドキュメント全体を取得します。 したがって、私の要件を考慮して、JSONドキュメントを保存する方法には2つの選択肢があります。 キーのピリオドをJSONで検索してエスケープし、MongoDBに挿入します。 JSON全体をBSON形式に変換して保存し、エスケープの必要性を回避し、MongoDBの外部で必要に応じてJSONを手動で解析します 結論を出すことができないため、どちらがより良い設計になるか教えてください。
14 json  mongodb 

2
セットをJSONで表す方法は?
JSONは、スカラー、配列/リスト、およびマップのデータ構造(Javaでの同等物)をサポートしています。 A Setは、そのままではJSONでサポートされていません。 JSONでセットを表す方法をいくつか考えました。 [1]-リストとして ただし、リストには独自の順序があるため、次の2つのリストはリスト["a", "b"]と["b", "a"]同じではありませんが、セットと同じである必要があります。 [2]-地図として マップのキーセットを使用し、値は無視してください。 しかし、再び、標準的な比較を使用すると、2つはマップと同じではありません。 {"a": "foo", "b": "bar"}、 {"a": null, "b": null} [3]-マップとして、特別な値で スカラを取り、言う0かnull、またはマップのすべてのキーの値になるように強制します。 {"a": 0, "b": 0} このように、標準の比較ツールでは、キーの順序が変更されても、オブジェクトは同じです。 ただし、この手法は、JSONドキュメントを無関係なデータで汚染します。 [4]-順序付きリストとして 最初の提案に戻りますが、今回は順序付きリストです。この種の比較問題を解決します。 ただし、並べ替えの複雑さも考慮に入れる必要があります。また、マップ表記は重複を処理しますが、並べ替えリストは処理しません。例: {"a": 400, "a": 9}として処理されますが{"a": 9}、["g", "g"]常に処理されます["g", "g"]。 そうは言っても、リスト表記はより明確であるように見えますが、マップ表記はキーの複製に対してより堅牢であり、特別な値について一貫性を保つことが難しくなっています(nullそのための良い選択のように見えますが)。 どう思いますか?セットをJSONでどのように表現しますか? PS これは単にJSONに関する問題であることに注意してください。yamlのような他のフォーマットも利用できることは知っています。まだ...

5
JSONおよびEntityを使用した循環参照の問題を回避する方法
データモデル/データベースのプレゼンテーションレイヤーとエンティティフレームワークにJSONを使用したMVCを活用するWebサイトの作成を実験しています。私の問題は、ModelオブジェクトをJSONにシリアル化することに関係しています。 私は自分のデータベースを作成するためにコードファーストの方法を使用しています。コードファーストの方法を実行するとき、1対多の関係(親/子)では、子が親への参照を持つ必要があります。(サンプルコードはタイプミスかもしれませんが、写真を取得します) class parent { public List<child> Children{get;set;} public int Id{get;set;} } class child { public int ParentId{get;set;} [ForeignKey("ParentId")] public parent MyParent{get;set;} public string name{get;set;} } JsonResultを介して「親」オブジェクトを返す場合、「子」にはクラス親のプロパティがあるため、循環参照エラーがスローされます。 ScriptIgnore属性を試しましたが、子オブジェクトを見ることができません。ある時点で、親子ビューに情報を表示する必要があります。 循環参照を持たない親と子の両方の基本クラスを作成しようとしました。残念ながら、baseParentとbaseChildを送信しようとすると、これらは派生クラスとしてJSONパーサーによって読み取られます(この概念が私を逃れていると確信しています)。 Base.baseParent basep = (Base.baseParent)parent; return Json(basep, JsonRequestBehavior.AllowGet); 私が思いついた1つの解決策は、「ビュー」モデルを作成することです。親クラスへの参照を含まないシンプルなバージョンのデータベースモデルを作成します。これらのビューモデルにはそれぞれ、データベースバージョンを返すメソッドと、データベースモデルをパラメーターとして取得するコンストラクターがあります(viewmodel.name = databasemodel.name)。この方法は機能しますが、強制されているようです。 注:ここで投稿しているのは、これがより議論に値すると思うからです。別のデザインパターンを活用してこの問題を克服することも、モデルで別の属性を使用するのと同じくらい簡単にすることもできます。私の検索では、この問題を克服する良い方法を見ていません。 私の最終目標は、サーバーと通信してデータを表示するためにJSONを大幅に活用する素晴らしいMVCアプリケーションを持つことです。レイヤー全体で一貫したモデルを維持しながら(または、私が思いつく限り)。

4
JSON応答にHTMLマークアップを含める必要がありますか?
eコマースサイトで、カートにアイテムを追加するときに、選択可能なオプションを含むポップアップウィンドウを表示したいと思います。iPod Shuffleを注文していて、彫刻する色とテキストを選択する必要があるとします。 ウィンドウをモーダルにしたいので、Ajax呼び出しで生成されたライトボックスを使用しています。現在、2つのオプションがあります。 オプション1:データのみを送信し、JavaScriptを使用してHTMLマークアップを生成する これの良い点は、Ajaxリクエストを最小限に抑えて、データをマークアップと混合しないことです。 この点でそれほど優れていないのは、サーバー側のテンプレートエンジンを使用する代わりに、JavaScriptを使用してレンダリングを行う必要があることです。クライアント側のテンプレートソリューションを使用して、アプローチを少しクリーンアップできる場合があります。 オプション2:HTMLマークアップを送信する これの良い点は、残りのレンダリングタスク(Django)で使用しているのと同じサーバー側テンプレートエンジンを使用して、ライトボックスのレンダリングを実行できることです。JavaScriptは、HTMLフラグメントをページに挿入するためにのみ使用されます。そのため、レンダリングは明らかにレンダリングエンジンに委ねられます。私には理にかなっています。 しかし、何らかの理由で、Ajax呼び出しでデータとマークアップを混合することに不安を感じています。何が私を不安にさせているのか分かりません。つまり、すべてのWebページが提供されるのと同じ方法で、データとマークアップが正しいのですか?
13 mvc  django  templates  json 

3
階層データ用のフラットまたはネストされたJSON?
既に5回前後に切り替えました。このRESTエンドポイントは/api/tags/内部で使用するものであり(サードパーティのクライアントはありません)、私がそれを使用しているのは私だけです。 私はこれらの2つの表現の間で決定しています: 平らな { "types":[ { "id":1, "text":"Utility" }, { "id":7, "text":"Lease Terms" }, ], "tags":[ { "id":8, "text":"Water", "type":1 }, { "id":9, "text":"Electricity", "type":1 }, { "id":5, "text":"Minimum 12 month lease", "type":7 }, { "id":17, "text":"lease negotiable/flexible", "type":7 }, ] } ややモジュール化されています。互換性を損なうことなく、「国」などの別の最上位レイヤーを追加できます。 入れ子 { "1":{ "text":"Utility", "tags":{ "8":{ "text":"Water" …
12 rest  api-design  json 

3
JSONキーでハイフンを使用することは悪い習慣ですか?
ハイフン(ケバブケース)を使用するJSONキーへのアクセスに関する多くの質問が表示されますが、今ではキーにキャメルケースまたはsnake_caseを使用するべきかどうか疑問に思っています。言語間で移植すると、ハイフンが複雑なマッピングを作成することもあります。一部のJSONデシリアライズライブラリがこれらのキーをcamelCaseスタイルに変換するのを見てきました。 例: var something = { "some-value": 'thing' } 対 var something = { "someValue": 'thing', "some_other_value": 'thing_two' }

7
列挙に特別な値「ALL」を含めることは良い習慣ですか?
私はマイクロサービス環境で新しいサービスを開発しています。これはRESTサービスです。簡単にするために、パスが/ historyBooksであるとしましょう そして、このパスのPOSTメソッドは、新しい履歴ブックを作成します。 歴史書が歴史の1つ以上の時代をカバーしていると仮定しましょう。 簡潔にするために、人間の歴史の次の時代しかないと仮定しましょう。 古代 ポストクラシック モダン 私のコードでは、それらをで表現したいと思いenumます。 メソッドの本体(ペイロード)はJSON形式であり、フィールド名を含める必要がありますeras。このフィールドは、eraこの本で扱う値のリストです。 本体は次のようになります。 { "name": "From the cave to Einstein - a brief history review", "author": "Foo Bar", "eras": ["Ancient", "Post Classical", "Modern"] } この特定のサービスでは、ビジネスロジックは次のとおりです。 入力に時代が指定されていない場合、この本はすべての時代を網羅していると見なされます。 APIレビューでは、すべての時代が網羅されていることを明示的に示すために、時代の列挙に 別の値を含めることを提案しましたALL。 長所と短所があると思います。 長所: 明示的な入力 短所: リスト内の2つの項目が提供されている場合、と言うALLとAncient-アプリケーションから取得されますでしょうか?これでALL他の値が上書きされるはずですが、それは新しいビジネスロジックです。 特定の時代を対象とする書籍のクエリを実行する場合、すべての時代を対象とする書籍をどのように表現しますか?場合ALLも(同じロジックを使用して)出力に使用され、それが解釈する消費者の責任だALLとは["Ancient", "Post Classical", "Modern"]。 私の質問 新しいALLものを持つことは、まったく持たないことよりも混乱を引き起こすと思います。 どう思いますか?このALL値を追加しますか、それなしでAPIを保持しますか?
11 rest  api  json  enum 

5
JSONを使用するためだけにJSONを使用する必要があります
PHP / MySQlバックエンドを使用して、学習用のブログサイトを構築しています。すべてのユーザー入力は、POST要求で送信されたフォームで処理されます。 JSONを使用することで、機能がよりクリーンになり、機能の維持や追加が容易になりますか?または、理由もなく交換フォーマットを追加するだけですか? それで、本質的に、JSONを使用することでどの機能が最もよく実装されるでしょうか?
11 php  json 

2
JSONのクエリ言語
非常に大きなJSONメッセージを返すサーバーがあり、クライアントアプリケーションはこの応答の一部にのみ依存しています。クライアントアプリケーションは、JSONメッセージに「xyz」プロパティが存在するかどうかを確認する必要があり、結果に応じて特定のユースケースを実行します。 この要件については、JSONメッセージ全体をオブジェクトに変換するのは少し費用がかかるため、この質問があります。 XMLのような標準のJSONクエリ言語はありますか?「はい」の場合、Javaでのこのクエリ言語の実装が最もよく知られています。 参考:サーバー側で新しいサービスを変更または追加することはオプションではありません。
11 java  json 

4
サーバーでXMLを解析するか、プロキシを提供して、ブラウザで解析する必要がありますか?
サードパーティのAPIとのインターフェースが必要です。このAPIを使用して、エンドユーザーのブラウザー内からGET要求を作成し、XML応答を受信します。このデータは、ユーザーがデータを検索したり、決定に使用したりできるブラウザーベースのアプリケーションで使用されます。主な問題は、ほとんどのブラウザーがクロスドメインXMLの使用を制限しているため、単純に取得できないことです。 APIからのXML。 ただし、全体的なデータは基本的に2つのセットに分かれています。 最初のデータセットは公開されており、頻繁に更新する必要があるだけなので、サーバー側のすべてのユーザーがキャッシュできるため、トラフィックが大幅に軽減されます。 2番目のデータセットはプライベートであり、各ユーザーに個別です。このデータは、APIでもより頻繁に更新されます。これにより、キャッシュの効果が大幅に低下します。 スケーラビリティの理由から、サーバーの負荷をできるだけ小さくしたいと思います。 私の前に2つのオプションが表示されます。 XMLリクエストをサードパーティのサーバーにルーティングし、クライアントとサードパーティのAPIの間で直接やり取りするために使用できるプロキシを提供します。 サーバーにXMLからJSONへの変換を実行させ、不要な情報を削除します。これは基本的に、サーバー用の新しいAPIを作成することを意味します。これは、サードパーティAPIからのリクエストに変換されます ユーザーにデータを提供するための最良の方法は何ですか?(2つのオプションのいずれかである必要はありません)
11 javascript  api  xml  websites  json 

2
オプションの有限セットへの追加。APIの重大な変更?
次の応答モデルを吐き出すHTTP APIエンドポイントを取ります。 { "type": "Dog", "name": "Jessi", ... } typeフィールドは次のいずれかであるとしてドキュメントに記載されているDog、CatまたはFish。 新しいオプションの追加は、たとえばRat、重大なAPIの変更と見なされますか? 有限リスト(開発者がオンにする可能性がある)にオプションを追加することは、APIの拡張または変更と見なされますか?
9 rest  api  api-design  json 

4
値のAPI応答リストをディクショナリとして作成することは良い方法ですか?
いくつかの統計情報を返すAPIエンドポイントがあります。現在、応答は次のようになります。 オプション1: { "stats": [ { "name": "some-stats-key1", "value": 10 }, { "name": "some-stats-key2", "value": 20 } ], ... other keys } しかし、これは少し複雑に見え、私はそれをどのようにするのか: オプション2: { "stats": { "some-stats-key1": 10, "some-stats-key2": 20 } ... other keys } オプション1は拡張が簡単ですが、ユーザーにとって快適ではないことを理解しています。これらのオプションのいずれかを使用して直面する可能性がある他の問題は何ですか?または、次のようなハイブリッドソリューションを作成する必要があります。 オプション3: { "stats": { "some-stats-key1": { "name": "some-stats-key1", "value": 10 }, "some-stats-key2": { …
9 rest  api  json 

1
JsonのBase64:Rest APIの良いアイデアですか?
私はRest APIを開発していて、自分自身に質問しています。 たとえばファイルのアップロードのために、base64でエンコードされたデータをJsonに配置することは良い考えですか?何base64ではいくつかの含まれている場合は{、}、:文字や休憩JSONコンテンツを? 良いアイデアではない場合、ベストプラクティスとして広く考えられている選択肢はどれですか。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.