{
"did": "00022B9A000000010001",
"ps": -1,
"hostName": "zs-dptpre-002.mr.corp.l.com",
"ipAddress": "10.4.225.29"
}
私は簡単に
答えて
ES6でJSON文字列から特定のオブジェクトを解析するためのjavascript機能を持たせることができる方法あなたは
var obj = {
"did": "00022B9A000000010001",
"ps": -1,
"hostName": "zs-dptpre-002.mr.corp.l.com",
"ipAddress": "10.4.225.29"
}
var {did, ps, hostName, ipAddress} = obj;
console.log(hostName)
その他(非ES6)の方法を構造化代入オブジェクトを使用することができますObject.keys()
とforEach()
ループを使用し、グローバルwindow
オブジェクト
var obj = {
"did": "00022B9A000000010001",
"ps": -1,
"hostName": "zs-dptpre-002.mr.corp.l.com",
"ipAddress": "10.4.225.29"
}
Object.keys(obj).forEach(function(k) {
window[k] = obj[k];
});
console.log(ipAddress);
console.log(did);
(psst ... OPは、私がコメントとして残した理由は、ES6を求めていませんでした) – evolutionxbox
いいえ、私はObject.keysのコードを理解していない...どのように変数に設定することができますvar ipaddress = ipAddressのようなものですか? –
この場合、オブジェクト値の代わりにオブジェクトキーに値を設定します。https://jsfiddle.net/Lg0wyt9u/1229/ –
それともJSONPathを使用してJSONの構文のようなXpath
を使用することができますを使用してOBJ内の各キーの変数を作成することです。このバージョンの詳細については、hereを参照してください。 次の例では、すべてのオブジェクトプロパティ値(リーフ)を取得しています。
////////////////////// JSONPATH
function jsonPath(obj,expr,arg){var P={resultType:arg&&arg.resultType||"VALUE",result:[],normalize:function(e){var t=[];return e.replace(/[\['](\??\(.*?\))[\]']/g,function(e,r){return"[#"+(t.push(r)-1)+"]"}).replace(/'?\.'?|\['?/g,";").replace(/;;;|;;/g,";..;").replace(/;$|'?\]|'$/g,"").replace(/#([0-9]+)/g,function(e,r){return t[r]})},asPath:function(e){for(var t=e.split(";"),r="$",a=1,n=t.length;n>a;a++)r+=/^[0-9*]+$/.test(t[a])?"["+t[a]+"]":"['"+t[a]+"']";return r},store:function(e,t){return e&&(P.result[P.result.length]="PATH"==P.resultType?P.asPath(e):t),!!e},trace:function(e,t,r){if(e){var a=e.split(";"),n=a.shift();if(a=a.join(";"),t&&t.hasOwnProperty(n))P.trace(a,t[n],r+";"+n);else if("*"===n)P.walk(n,a,t,r,function(e,t,r,a,n){P.trace(e+";"+r,a,n)});else if(".."===n)P.trace(a,t,r),P.walk(n,a,t,r,function(e,t,r,a,n){"object"==typeof a[e]&&P.trace("..;"+r,a[e],n+";"+e)});else if(/,/.test(n))for(var l=n.split(/'?,'?/),s=0,c=l.length;c>s;s++)P.trace(l[s]+";"+a,t,r);else/^\(.*?\)$/.test(n)?P.trace(P.eval(n,t,r.substr(r.lastIndexOf(";")+1))+";"+a,t,r):/^\?\(.*?\)$/.test(n)?P.walk(n,a,t,r,function(e,t,r,a,n){P.eval(t.replace(/^\?\((.*?)\)$/,"$1"),a[e],e)&&P.trace(e+";"+r,a,n)}):/^(-?[0-9]*):(-?[0-9]*):?([0-9]*)$/.test(n)&&P.slice(n,a,t,r)}else P.store(r,t)},walk:function(e,t,r,a,n){if(r instanceof Array)for(var l=0,s=r.length;s>l;l++)l in r&&n(l,e,t,r,a);else if("object"==typeof r)for(var c in r)r.hasOwnProperty(c)&&n(c,e,t,r,a)},slice:function(e,t,r,a){if(r instanceof Array){var n=r.length,l=0,s=n,c=1;e.replace(/^(-?[0-9]*):(-?[0-9]*):?(-?[0-9]*)$/g,function(e,t,r,a){l=parseInt(t||l),s=parseInt(r||s),c=parseInt(a||c)}),l=0>l?Math.max(0,l+n):Math.min(n,l),s=0>s?Math.max(0,s+n):Math.min(n,s);for(var o=l;s>o;o+=c)P.trace(o+";"+t,r,a)}},eval:function(x,_v,_vname){try{return $&&_v&&eval(x.replace(/@/g,"_v"))}catch(e){throw new SyntaxError("jsonPath: "+e.message+": "+x.replace(/@/g,"_v").replace(/\^/g,"_a"))}}},$=obj;return expr&&obj&&("VALUE"==P.resultType||"PATH"==P.resultType)?(P.trace(P.normalize(expr).replace(/^\$;/,""),obj,"$"),P.result.length?P.result:!1):void 0}
// some extensions I have added to JSONPath
var jsonPathStore = function(obj,path,values) {
var maps=jsonPath(obj, path,{resultType:"PATH"})
maps.map(function(item,index) {
return eval('(' + item.replace(/\$/,"obj") + '="' + values[index] +'"' + ')');
})
}
var jsonPathDelete = function(obj,path) {
var maps=jsonPath(obj, path,{resultType:"PATH"})
maps.map(function(item,index) {
return eval('(' + 'delete ' + item.replace(/\$/,"obj") + ')');
})
}
var jsonPathRead = function(obj,path) {
var maps=jsonPath(obj, path,{resultType:"PATH"})
return maps.map(function(item,index) {
return eval('(' + item.replace(/\$/,"obj") + ')');
})
}
////////////////////// JSONPATH
var data = {
"did": "00022B9A000000010001",
"ps": -1,
"hostName": "zs-dptpre-002.mr.corp.l.com",
"ipAddress": "10.4.225.29"
};
//
// xpath all leaf expression is //*[not(*)]
// in jspath becomes $..[?(@.length>=0)]
var jsonObjectLeafValues =
jsonPathRead(data,"$..[?(@.length>=0)]");
// this XPath will read all the id properties starting from the root element
console.log(JSON.stringify(jsonObjectLeafValues, null, 2))
そして、なぜなら私はこれをすべてやっているのです...なぜですか? –
あなたが 'XPath' /' XML'から来た場合、別のオプションを表示するだけです。もちろん、最も簡単な解決策は上記の回答ですが、 'xml'のような構造を持つ非常に複雑なjsonを想像すると、' xpath'は 'xpath'式を使ってプロパティにアクセスする良い方法につながります。ちょうど私の2セント。 – loretoparisi
- 1. 私は簡単に
- 2. 私のC++デモをiPhoneに簡単に置くことは簡単ですか?
- 3. は、簡単にアクセス
- 4. 私の簡単なPHPプロジェクトに簡単なxmlrpc_clientライブラリを含める方法
- 5. は簡単
- 6. 簡単にアクセス
- 7. 簡単にカウントダウン
- 8. は、簡単に言うと
- 9. AWS EC2インスタンススケジューラーは簡単に
- 10. どのように私は簡単にするために、コマンドラインアプリケーション
- 11. は、私はすでにテーブル、簡単な例を持って列
- 12. 私は非常に簡単にKeyEventを持ってJavaFXの
- 13. 簡単なナビゲーションは
- 14. 簡単なScalaフィルタは簡単ではありません
- 15. は、私は簡単にクエリにこだわっている私のテーブルです
- 16. 簡単
- 17. バイナリストリッピングを簡単に
- 18. は簡単に私が持っているモデル
- 19. 私の簡単なExcel VBAマクロをデバッグするには?
- 20. Symfony2の301リダイレクトは私のrouting.ymlファイルに簡単なredirectt持っ
- 21. 私は非常に簡単なプロローグコードeliza chatbotが必要
- 22. インポートブレンダーテクスチャ私は、次の簡単なブレンダーテクスチャ持って、常に黒
- 23. 私は簡単になるだろうC
- 24. 私は簡単に説明してください必要logstash
- 25. 配列の簡単なコードは、私にランタイムエラーを与える
- 26. I18Nは私のYiiのプロジェクトに簡単なコンポーネントを作成し
- 27. エラー私はnodejsに簡単なプロキシを書いた
- 28. CSS3、簡単にボタンを押して簡単にする方法は?
- 29. T-SQLは、私は、このT-SQL(簡体)は単一の行
- 30. jsonで簡単に印刷する方法簡単なJavaライブラリ
あなたが何かに行き詰まっていましたか?あなたの質問は何ですか? – ppeterka
es6を使用すると、[destructuring](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)を使用できます。それ以外の場合は、JSON文字列を解析すると、通常のJSオブジェクトと同様にアクセスできます。 – evolutionxbox
質問タイトルの "json string"を参照していますが、これは普通の古いJavaScriptオブジェクトのようです。実際にはJSON文字列の場合、JSON全体を解析してJavaScriptオブジェクトにするだけで、(「フィールド」ではなく)プロパティにアクセスするだけで、特定のオブジェクトを解析する必要はありませんいつもそうだろう。 –