2016-12-20 3 views
-2

私はLogMeIn Central APIを使用しています。私の要求の本文には、Jsonを送信する必要があります。 \ "5888、6225、214752 \"、\ "フィールド\":\ "ServiceTag \"rails to_json引用符を削除する

host_ids = LmiHost.all.collect {|lmi| lmi.host_id}.join ', ' 
    create_servicetag_report_request.body = {hostIds: host_ids, fields: 'ServiceTag'}.to_json 

これは

{\ "ホストID \" に体を回す:私はこれを持っています}

私は

」\を削除する方法このセクションから

"5888、6225、214752 \"それの周りに引用符を持っていると仮定されていません\

。 on Railsの私はルビーを使用しています

+2

- IDのカンマ区切りリストとは対照的に、あなたは、APIは、JSONを期待していることを確認している:あなたは.collect { |lmi| lmi.host_id }map(&:host_id)に短縮することができますか? – Brian

+0

ここをクリックhttp://developer.logmein.com/api/hostactions/#system-inventory –

+1

1行目の 'join'を削除してください。 – engineersmnky

答えて

2

理由がto_jsonの場合、hostIdsを文字列として変換するため、\"(エスケープ引用符)が追加されます。あなたのレールのコンソールでこれを試してみてください。

{"hostids":[0,1,2,3]}.to_json 
=> "{\"hostids\":[0,1,2,3]}" 

{"hostids":"[0,1,2,3]"}.to_json 
=> "{\"hostids\":\"[0,1,2,3]\"}" 

これは試みることによって、別の方法を見ることができます。puts [1,2,3,4]puts "[1,2,3,4]"

を最終的に私が送ることができます正確にどのように複数のホストIDを把握するLMI中央APIを参照することになります。

+0

' host_ids'は文字列です。それを1つにしました。 'join '、'' – engineersmnky

+0

を使用しています。これがそのように表示されている理由です。 OPが有効なjsonを望む場合、idのリストはカンマで区切られた文字列またはハッシュの配列/配列でなければなりません – whodini9

+1

彼はAPIにリンクを追加しました。 "hostIds":[、...]したがって、Stringではなく配列でなければなりません。 – whodini9

0

あなたはそれを解析するためにJSON.parse(create_servicetag_report_request.body[:hostIds])を使用することができます。

0

ただ、このラインからjoin一部を除去:

host_ids = LmiHost.all.collect { |lmi| lmi.host_id }.join ', ' 

joinは、カンマ区切りの文字列にIDのあなたの配列を結合します。これはあなたが望むものではないようです。

Btw。 JSON文字列は二重引用符で包まれることになっている

create_servicetag_report_request.body = { 
    hostIds: LmiHost.all.map(&:host_id), 
    fields: 'ServiceTag' 
}.to_json 
関連する問題