問題タブ [json]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
2108 参照

php - ColdFusion の serializeJSON メソッドから PHP の json_decode への移行に問題がある人はいますか?

インターウェブはこれに関しては役に立ちません。を使用して ColdFusion でデータをエンコードserializeJSONし、PHP を使用してデコードしようとしていjson_decodeます。json_decodeほとんどの場合、これは正常に機能しますが、場合によってはNULL. 明らかな原因を探しましたが、serializeJSON期待どおりにフォーマットされているようです。他に何が問題になる可能性がありますか?

更新: 何人かの人々が (賢明にも) 問題の原因となっている出力を投稿するように私に依頼しました。結果セットがすべてのデータ (合計 565,135 ASCII 文字の 2300 以上の賃貸物件の情報をリストする) であることを発見したことを除いて、そうします! これは問題になる可能性がありますが、PHP ドキュメントには文字列の最大サイズに関する記述はありませんでした。そこでの制限要因は何でしょうか?羊?

更新 II: 問題は、何人かのユーザーが Microsoft Word のテキストを「スマート」引用符でコピー アンド ペーストしたことだったようです。それらの厄介なユーザー...

0 投票する
6 に答える
8490 参照

.net - .net で JSON を作成する

まず、私は .net 開発者ではないということから始めましょう。私がこの質問をしている理由は、私たちが REST-API を展開し、最初の統合パートナーの 1 つが .net ショップだったからです。

したがって、基本的には .net が JSON を作成するための何らかのラッパーを提供すると想定していましたが、問題の開発者は文字列を手作業で作成していました。私はこのトピックを少し調べましたが、.net が何かを提供すると信じていますが、実際には何も見つかりませんでした。:)

PHP では、次のようにします (ext/json が利用可能であると仮定します;):

また、json を配列/オブジェクト構造にデコードするために使用するものにも興味があります。

助けていただければ幸いです。

0 投票する
5 に答える
18607 参照

asp.net - ASP.NET Web サービスからカスタム JSON シリアル化を実装する方法は?

WebService からカスタム クラスのインスタンスを返すときのシリアル化には、どのようなオプションがありますか?

使用法に応じて設定される場合とされない場合があるその他のプロパティと同様に、いくつかの子コレクション クラス プロパティを持ついくつかのクラスがあります。これらのオブジェクトは、ScriptService 属性で装飾された ASP.NET .asmx WebService から返されるため、さまざまな WebMethods によって返されるときに JSON シリアル化によってシリアル化されます。

問題は、すぐに使用できるシリアライゼーションが、使用されているかどうかに関係なく、すべてのパブリック プロパティを返し、クラス名やその他の情報を、必要な量を制限したい場合よりも詳細な方法で返すことです。トラフィック。

現在、返されるクラスに対して、JSON シリアル化を処理するカスタム JavaScript コンバーターを追加し、以下のように web.config に追加しました。

ただし、これにはクラスごとにカスタム コンバーターが必要です。サービスを拡張したり、カスタムシリアライザーを作成したりして、すぐに使用できる JSON シリアライゼーションを変更する他の方法はありますか?

フォローアップ
@marxidad:

他のアプリケーションで DataContractJsonSerializer クラスを使用していますが、これらのサービスに適用する方法がわかりません。サービスのセットアップ方法の例を次に示します。

WebMethods は JavaScript によって呼び出され、JSON でシリアル化されたデータを返します。シリアライゼーションを変更できる唯一の方法は、上記のように JavaScript コンバーターを使用することですか?

WebService にカスタム DataContractJsonSerializer を使用するように指示する方法はありますか? web.config 構成、属性によるサービスの装飾などによるものでしょうか?

更新
さて、上記のように個々の JavaScriptConverters を作成する以外に、すぐに使用できる JavaScriptSerializer を切り替える方法を見つけることができませんでした。

そのために、別のコンバーターを作成する必要がないようにするために行ったことは、汎用の JavaScriptConverter を作成することでした。処理したいクラスに空のインターフェイスを追加し、Web サービスの起動時に呼び出される SupportedTypes はリフレクションを使用して、次のようなインターフェイスを実装する型を見つけます。

実際の実装は少し異なり、型がキャッシュされるため、空のインターフェイスではなくカスタム属性を使用するようにリファクタリングする可能性があります。

ただし、これにより、カスタム コレクションを扱うときに、少し異なる問題に遭遇しました。これらは通常、一般的なリストを拡張するだけですが、List<> 自体の代わりにカスタム クラスが使用されます。これは、通常、コレクション クラスにカスタム ロジック、並べ替えなどがあるためです。

問題は、JavaScriptConverter の Serialize メソッドが、JSON にシリアル化された辞書を、関連付けられた型の名前と値のペアとして返すのに対し、リストは配列として返されることです。そのため、コンバーターを使用してコレクション クラスを簡単にシリアル化することはできませんでした。これに対する解決策は、これらの型をコンバーターの SupportedTypes に含めず、リストとして完全にシリアル化することでした。

したがって、シリアライゼーションは機能しますが、これらのオブジェクトを Web サービス呼び出しのパラメーターとして別の方法で渡そうとすると、デシリアライゼーションが中断されます。これは、入力を文字列/オブジェクト ディクショナリのリストとして扱うことができないためです。コレクションに含まれるカスタム クラスのリストに変換されません。これに対処する唯一の方法は、文字列/オブジェクト辞書のリストであるジェネリック クラスを作成し、そのリストを適切なカスタム コレクション クラスに変換し、代わりにジェネリック クラスを使用するように Web サービス パラメーターを変更することです。 .

ここには多くの問題や「ベスト プラクティス」の違反があると思いますが、大量のカスタム コンバーター クラスを作成しなくても問題は解決します。

0 投票する
3 に答える
6315 参照

javascript - オブジェクトを動的に参照するにはどうすればよいですか?

Javascript には、次のオブジェクトがあります。

今、私はこれをしたい

しかし、もちろんうまくいきません。このオブジェクトを動的に参照する正しい方法は何ですか?

0 投票する
1 に答える
2719 参照

c# - JSON のデシリアライズ Google AJAX Translation API

JSON が次のように返されます。

そして、それを解析して、セットアップした ResponseData オブジェクトにする必要があります。

次のようにデシリアライズします。

しかし、翻訳されたテキストは常に空です。

0 投票する
2 に答える
413 参照

c# - リクエストが JSON を受け入れるかどうかを確認するより良い方法はありますか?

実際、私はこの方法を使っています。もっと良い方法はありますか?

0 投票する
3 に答える
3215 参照

json - JSONシリアライゼーションのバリエーションに対処する適切な方法

Python の SimpleJSON を使用して JSON をシリアル化する Web サービスと、Google の Visualization APIを使用する javascript/ クライアントがあります。Google Data Table の Query メソッドを使用して JSON 応答を読み込もうとすると、「無効なラベル」エラーが発生します。

Google スプレッドシートは、オブジェクト キーを引用符なしで JSON を出力することに気付きました。引用符なしで JSON を読み込もうとしましたが、うまくいきました。SimpleJSON の出力を Google のデータに読み込むための最良の方法は何だろうと思っていました

query = new google.visualization.Query("http://www.myuri.com/api/").

正規表現を使用して引用符を削除できますが、それはずさんなようです。私が試したJavaScript JSON解析ライブラリは、オブジェクトキーを引用符で囲まないとJSON構文を読み取れません。

ここにいくつかの良い背景の読み物があります re: オブジェクトキーの周りの引用符:

http://simonwillison.net/2006/Oct/11/json/ .

0 投票する
5 に答える
6411 参照

xml - JSON と XML の Groovy 解析

Groovy を使用すると、JSON と XML の読み取りとクエリの速度とメモリ オーバーヘッドの点でパフォーマンスが向上すると思いますか?

0 投票する
4 に答える
931 参照

c# - 正しい Json を生成するオブジェクト初期化構文

linq を使用して、データのリストを特定の形状に成形し、ajax 呼び出しから Json として返そうとしています。

このデータを考えると:

そして、このコード: ** これは正しくなく、修正する必要があります!! **

私はなりたいですdesiredResult

しかし、現在は次のとおりです。

{ "c" : "One" },{ "c" : "Two" }など

1 つの問題は、オブジェクト初期化子の左側で、それ自体でcはなく、の値が必要なcことです...

0 投票する
7 に答える
204770 参照

javascript - JavaScriptで配列要素をJSONでデコードする方法は?

特に、URL を含む JavaScript 配列があります。ページに URL を単純に配置しようとすると (配列は Yahoo! Maps API を含むプロジェクトにあります)、本来あるべき URL が表示されます。

しかし、リダイレクトを実行しようとしたり、単にリンク配列要素で「アラート」を実行しようとすると、次のようになります。

function(){return JSON.encode(this);}

私が見る限り、これはブラウザがページをレンダリングするときに JSON.encode を実行するためです。したがって、リンクは正常に表示されます。私はそれを正しくリダイレ​​クトするためにいくつかの方法を試しました(それがリンクでやりたいことです)(「eval」の使用を含む)が、うまくいきませんでした。

いくつかの提案に従った後、実行しましeval('(' + jsonObject + ')')たが、それでも同じ出力が返されます。

それで、これはどのように行われますか?