2

サードパーティのシステムからJSON文字列としてデータを取得するアプリケーションを構築しています。このJSON文字列を、内部Javascriptライブラリで定義されている既存の関数で使用できるように、構造が異なる別のJSON文字列に変換する必要があります。

理想的には、Javascriptを使用してクライアントマシンでこの変換を実行できるようにしたいと思います。

私はこれを達成する手段としてJSONTを見てきましたが、そのプロジェクトは積極的に維持されていないようです。

http://goessner.net/articles/jsont/

これを達成するための事実上の方法はありますか?または、独自のマッピングコードをロールする必要がありますか?

4

3 に答える 3

2

JSONを内部JavaScriptライブラリに渡してはいけません。JSONをJSオブジェクトに解析してから、それを繰り返し処理して、新しい形式に変換する必要があります

var json = '[{"a": 1:, "b": 2}, {"a": 4:, "b": 5}]';
var jsObj = JSON.parse(json);
// Transform property a into aa and property b into bb
var transformed = jsObj.map(function(obj){
    return {
       aa: obj.a,
       bb: obj.b
    }
});

// transformed = [{aa:1, bb:2},{aa:4, bb:5}]

If you really want JSON you'd just call JSON.stringify(transformed)

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/map

さらに複雑な変換を伴う別の答えがあります標準のjsonからjqueryDatatable配列を作成する方法は?

于 2013-01-12T01:07:07.480 に答える
1

ホームページからわかることから、JSONTプロジェクトは、JSONをまったく異なる形式(つまり、JSON => HTML)に変換することです。

おそらく、from_json()作成しているオブジェクトのメソッドと同じように、独自のマッピングコードを作成する方がはるかに簡単になります(したがってYourSpecialObject.from_json(input);、JSONデータから生成されたオブジェクトのインスタンスを返します)。

あなたの質問から、これがあなたのユースケースに合うかどうかはわかりませんが、誰か他の人がすぐにもっと良い答えを持ってくれることを願っています。

于 2013-01-12T01:06:31.703 に答える
1

もう1つのオプションは、XSLTを使用することです。JSON用のSAXリーダーとライターがあるので、JSONでXSLTを使用して楽しく書くことができます。恐ろしいJSONからXMLへの変換はなく、逆変換を続行する必要があります。参照: http: //www.gerixsoft.com/blog/json/xslt4json

XMLベースの言語を使用してJSONを変換することの皮肉は確かにわかりますが、それは良い選択肢のようです。

それ以外の場合は、独自のマッピングコードを作成するのがおそらく最善です。

于 2013-01-12T01:15:23.743 に答える