問題タブ [superobject]
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.
json - Delphiスーパーオブジェクト、jsonのジェネリックリスト
SuperObjectのヘルプを使用してJSONとしてエンコードしようとするTObjectList<>フィールドを持つオブジェクトがあります。
SuperObjectsコードの奥深くに、ToClassプロシージャがあり、フィールドを繰り返してjsonの結果に追加します。
このループでは、TRttiFieldsFieldTypeがチェックされます。nilの場合、オブジェクトをスキップします。
私のジェネリックリストフィールドのFieldTypeはnilです。なんで?
SuperObjectにオブジェクトのリストをシリアル化するにはどうすればよいですか?
json - JUST SHARE - Delphi SuperObject を使用して MySQL DataSet を Json 形式に変換
Delphi SuperObject を使用して Json を使用した私の経験を共有してください
アイデアは、クエリ結果をjson形式に簡単に変換する方法です。
文字列を使用して、すべてのデータ形式 (BLOB、DATE、DATETIME を含む) を表します。将来的には、json ファイルをデータベースに簡単にインポートできます。
私はゼロからコードを書くのではなく、自分のニーズに合わせて少し変更を加えただけです
コードは次のとおりです。
json - SuperObect で Json を変更する
Json/Delphi と連携するために SuperObject を使用しています。文字列を取得して var スーパーオブジェクト タイプを作成する関数があります。オブジェクトがあるかどうか (私の場合は「smtp」) を確認する必要があります。 、作成します。問題は: 'smtp' には smtp.address などの子があり、smtp とそのすべての子を作成する必要がありますが、関数が機能しません。
私のコード:
誰でも私を助けることができますか?
SuperObject Unit で Delphi 2007 を使用しています
delphi - SuperObjectを使用して、Delphiでオブジェクトをパラメータとして使用するメソッドを呼び出す方法は?
SuperObjectライブラリを使用して、特定のオブジェクトのメソッドをその名前で呼び出し、この回答のようにSOInvokerメソッドを使用してそのパラメーターをjson文字列として指定できます。
作成したオブジェクトをパラメータとして送信する方法を知りたいのですが。私はそれを次のように送ろうとしました
ただし、MyMethod内では、LObjectList参照は失われます。
私は何が間違っているのですか?
スーパーオブジェクトライブラリはここからダウンロードできます
delphi - コードがコンパイルされず、E2506を取得するのはなぜですか。インターフェイスセクションで宣言されたパラメータ化された型のメソッドは、ローカルシンボルを使用してはなりません。
DelphiXEを使用しています。
次のユニットは、このエラーでコンパイルに失敗します。
何故ですか?回避策はありますか?
json - SuperObjectは、プロパティではなくプライベート変数をシリアル化します
クラスの動的配列をシリアル化する次のコードがあります。何らかの理由で、SuperObjectはクラスプロパティ名ではなくプライベート変数をシリアル化します。SuperObjectでこの動作を修正する方法を誰かにアドバイスできますか?
上記のコードは、次のJSONを生成します。
私が求めているのは次のJSONです。
json - SuperObject-「。」を含むフィールド名からのデータの解析。リテラル
最近、JSONを解析するときに壁にぶつかりました。ご覧のとおり、CloudFlareクライアントインターフェイスAPIを使用しているときに、特定のIPの「脅威の評価」を検索したかったのです。問題は、APIの設計により、形式が次のようになることです。
xxx.xxx.xxx.xxx
データを取得するために必要なフィールド名を表します。すぐに、私が直面していた問題をおそらく見ることができます。解析文字列のドット文字は、現在のパスのサブレベルであると見なされます。
<value>
IPの実際の評価を表します。ただし、形式とそこから返されるデータ型は異なります。脅威ではない、または脅威の評価がないIPではfalse
、ブール値として返されます。検索エンジンのクローラーでは、文字列として"SE:<var>"
(<var>
は数値)を返します。既知の脅威については、戻ります"BAD:<var>"
(ここ<var>
で、は数値です)。そのため、返される既知のデータ型に依存することはできませんでした。
ただし、主な問題は、このフィールドから値を読み取ろうとすると、フィールド名内のドットが原因で明らかに失敗することです。
json - Delphi:スーパーオブジェクトシリアル化カスタムコンバーター/インバーター
オブジェクトとレコードをシリアル化して送信し、リモートエンドポイントで復元したいと思います。ローカルエンドとリモートエンド用の共有オブジェクト宣言ユニットがあります。
JSONオブジェクトとしてさまざまなレコードを含むフィールドを持つレコードがあります。
ケース1
反対側の逆シリアル化のために、データフィールドのJSONオブジェクトにタイプ名(TRttiType.QualifiedName)を書き込む必要があります。
構造の例:
使用法:
復元後、TPmMessageが表示されますが、DataJSONオブジェクトのタイプがわかりません。
ケース2
ケース1の場合、DataJSONオブジェクトのタイプがわかりません。そこで、QualifiedNameを値としてDataObjectTypeフィールドを追加しました。
その場合、私はセラリゼーションのために別の構造を作ります:
この構造は、コードで正しくシリアル化されています。
DataObject:ISuperObjectも適切にシリアル化されました。
質問は、 DataObjectを逆シリアル化する方法ですか?
使えると思いました
ただし、メソッド'AsType'には明示的な型引数が必要です。
したがって、正しいタイプを設定するためのユースケースを使用することが唯一の方法だと思います。
スーパーオブジェクトベターを使用してシリアル化/逆シリアル化するにはどうすればよいですか?
これの代わりに、メッセージのより良い構造を提案してもらえますか?
json - SuperObjectを使用したインターフェースフィールドを持つオブジェクトへのJSONの逆シリアル化
DXE2でSuperObjectを使用してjsonからインターフェイスフィールドを含むオブジェクトを逆シリアル化するのに問題があります(シリアル化は正常に機能します)。次のことを考慮してください。
実行がフィールドのTSuperRttiContext.FromJson.FromClass
チェックにFTest
到達すると、doo-dooは天井のプロペラ(または、必要に応じてテーブルに取り付けられたもの)に当たります。この時点で、Result := FromJson(f.FieldType.Handle, GetFieldDefault(f, obj.AsObject[GetFieldName(f)]), v);
が呼び出され、SuperObject.pasコードの興味深い部分に移動します。簡潔にするために、ここで複製します。
に割り当てられた値soguid
はの値ISuperObject
であるため、明らかに2つは一致しません(テスト中ですITest
、覚えていますか?)。だから私はこれをどうすればいいのか少し迷っています。1つ以上のインターフェイスフィールドで構成されるオブジェクトを逆シリアル化することは違法ですか?
これは非常に一般的な使用例のように思われるので、信じがたいです。選択する特定のインターフェースの実装を知ることは簡単ではないかもしれないという事実を理解することができます。それでも、前文のコメントから、インターフェイスされたオブジェクトがサポートされることになっていることがわかります-http://code.google.com/p/superobject/source/browse/trunk/superobject.pas#47。
誰かがこれを解決したなら、きっと素晴らしいでしょう。ありがとう!:)