2016-12-13 8 views
-1

これは基本的に私がボットを持っていれば、あなたが書いたものをあなたが書いているIDに基づいて情報を得ることができます。 662というIDを持っていて、それを書いているのなら、それはjsonファイルのsteamIDが662であるかどうかをチェックします。もしそれがあればあなたの通貨とあなたのIDを表示します。JSONファイルをJavascriptで読んで編集する場合

すべて私は考え出した。私の助けが必要なのは、あなたのIDが私のjsonに存在しない場合です。それができないなら、私はそれを新しいものとして創造したい。

これは私のJSONコードです:

{ 
    "tradesettings": { 
    "pollInterval": 5000, 
    "confirmationChecker": 10000, 
    "acceptEscrow": false, 
    "acceptScammers": false, 
    "ourmaxitems": 50, 
    "theirmaxitems": 5 
}, 

"accsettings": { 
    "amountofaccounts": 3 
}, 

"accounts":[ 
    { "botID":"3", "steamID":"662", "balance": 0 }, 
    { "botID":"2", "steamID":"211", "balance": 0 }, 
    { "botID":"1", "steamID":"76561198026027024x", "balance": 666 }, 

    { "botID":"0", "steamID":"", "balance": 0 } 
]} 

そして、私がしたいとき、私は全体の事に

 { "botID":"4", "steamID":"421", "balance": 0 }, 

を元を追加できるようにしたいので、それは言う:

"accounts":[ 

{ "botID":"4", "steamID":"421", "balance": 0 }, 
{ "botID":"3", "steamID":"662", "balance": 0 }, 
{ "botID":"2", "steamID":"211", "balance": 0 }, 
{ "botID":"1", "steamID":"951", "balance": 666 }, 

{ "botID":"0", "steamID":"", "balance": 0 }] 

新しいアカウントで新しいIDを作成しました。それ、どうやったら出来るの?? Ohとbtw、私のボットはmyBot.jsにありますが、このjsonファイルはconfig.jsonという同じフォルダです。

これは、これを編集するコードです。

 if(ok == 1) { 
     console.log("[SERVER] "+steamID.getSteamID64()+" is asking for his account information."); 
     for(r=0;r<= config.accsettings.amountofaccounts ;r++) { 
      if (config.accounts[r].steamID != "undefined") { 
       if(config.accounts[r].steamID == steamID.getSteamID64()) { 
        console.log("[SERVER] "+ steamID.getSteamID64() +" is asking for his account info, respondig with it.\n") 
        client.chatMessage(steamID.getSteamID64(), "\nDisplaying your account on this bot\nBotID: "+config.accounts[r].botID+"\nSteamID: "+config.accounts[r].steamID+"\nBalance: "+config.accounts[r].balance); 

        break; 
        ok = 0; 
        r = 0; 

       } 
      } 
      if(r == config.accsettings.amountofaccounts) { 

       console.log("[SERVER] "+steamID.getSteamID64()+" dosen't have an account here, creating one for him."); 
       client.chatMessage(steamID.getSteamID64(),"Hold on, creating an account.\n\nDone, please type '!account' to view it\n(took 0.03 seconds)"); 

       //var item2={ "botID":config.accsettings.amountofaccounts+1, "steamID":steamID.getSteamID64(), "balance": 0 }; 
       //config.accounts.push(item2) 

       config.accounts.push({botId: "10", steamID: "11", balance: 0}); 

       break; 
       r = 0; 
       ok = 0; 

      } 
     } 
    } 

が続いてJSONファイルを別のファイルと呼ばれるconfig.jsonあり

+0

あなたの質問は本当にJSONのようなオブジェクトを変更する方法ではありません。実際には、JavaScriptにファイルを読み書きする方法です。これを行うには多くの方法があります。あなたは、どのような環境で実行しているのか、そして現在そのファイルを読みとっているのか、さらに具体的にする必要があります。 –

+0

私はあなたにプライベートで書くことができる方法はありますか?あなたに見せるためにかなりのコードがあります。 –

+0

いいえ、すべてを公開しておくことが最善です。あなたのコードが独占的なものであれば、あなたの問題を表現するが、秘密の情報を持たない単純化されたバージョンを提供できるはずです。 –

答えて

0
var account=[]; 

var item={ "botID":"3", "steamID":"662", "balance": 0 }; 
var item2={ "botID":"2", "steamID":"211", "balance": 0 }; 

account.push(item); 
account.push(item2); 

結果は次のとおりです。

[{ "botID":"3", "steamID":"662", "balance": 0 }, 
{ "botID":"2", "steamID":"211", "balance": 0 }] 

は、あなたがしてMAPとして

をJSONを使用する場合
var map = {}; 
// add a item 
map[key1] = value1; 
// or remove it 
delete map[key1]; 
// or determine whether a key exists 
key1 in map; 

IDフィールドでJSONに存在しないJSON(配列)の新しい項目を作成するには...まず、既存のJSONに反復処理し、関数の応答に応じて動作させる必要があります。

必須項目(この例ではID)で項目を検索するには、この機能を記述することができます。

function findBySpecField(data, requestedField, value, responseField) { 
    var container = data; 
    for (var i = 0; i < container.length; i++) { 
     if (container[i][requestedField] == value) { 
      return(container[i][responseField]); 
     } 
    } 
    return ''; 
} 
+0

こんにちは、私は不思議です。あなたは私がbotを閉じるまで、実際にconfig.jsonファイルを永遠に編集したいのではないことを知っています。これはそのようなものではありません。 –

0

ノードでは、fs moduleを使用してファイルシステムと対話する必要があります。あなたのファイルが正しくフォーマットする必要があるか、あなたの場合はあなたのプログラムが

  • をクラッシュします

    1. const filename = `${__dirname}/config.json`; 
      const fs = require('fs'); 
      
      let config = JSON.parse(fs.readFileSync(filename, {encoding: 'utf8'})); 
      
      // do your stuff 
      
      fs.writeSync(filename, JSON.stringify(config), {encoding: 'utf8'}); 
      

      あなたが注意する必要がありますいくつかのもの:あなたのケースでは、それはこのような何かを行くだろうアプリは悪いデータを書き込み、あなたの設定ファイルはトーストです、あなたはそれのバックアップを作成する必要があります。

    2. 明示的に指定されたエンコードを読み書きします。
  • +0

    なんらかの理由でこのエラーが発生します。 return binding.writeString(fd、buffer、offset、length、position); ^ 注:私はconfig.jsonに接続しています。私はすでにそこからいくつかの情報を得ています。 –

    +0

    これはエラーのようには見えません。メッセージの全文は何ですか?そして、あなたは「jsonファイルに接続しました」とはどういう意味ですか?あなたはそれを読むことができるという意味ですか?そして、移転することはどういう意味ですか?それをディスクに書き込むことを意味しますか? –

    +0

    私はすでにconfig.accounts [0] .steamIDのようなものを書くことができ、最初のもののsteamIDを私に与えるでしょう。私はすでにそれを行うことができます。私が必要とするのは、私が何を意味するのか知っていれば、config.accounts [1] .steamIDを作成できることです。 –

    関連する問題