2017-06-20 21 views
0

ID#、電話番号、および電子メールを持つユーザーのJSONドキュメントがあります。別のID、電話番号、電子メールを入力すると、新しいユーザーの情報を取得してファイルに追加する必要があります。私は{ID:#、Phone:#、Email:#}だけの構造しか持っていませんが、うまくいきます。しかし、私のJSONファイルのような次のようになります。JSONファイルにJSON構造体を追加するGolang

[{"ID":"ABCD","Phone":1234567890,"Email":"[email protected]"}] 
[{"ID":"EFGH","Phone":1234567890,"Email":"[email protected]"}] 
[{"ID":"IJKL","Phone":1234567890,"Email":"[email protected]"}] 
[{"ID":"MNOP","Phone":1234567890,"Email":"[email protected]"}] 
[{"ID":"QRST","Phone":1234567890,"Email":"[email protected]"}] 
[{"ID":"UVWX","Phone":1234567890,"Email":"[email protected]"}] 

だから私は、ドキュメントに追加することができるよ、それは括弧[]で囲まれた新しいJSON構造です。以下は私のコードです。私は実際のハッシュIDを省いた。

func ToIds(e string, p int64) { 
    hashed := GenId() 
    var jsonText = []byte(`[ 
     {"ID": "", "Phone": 0, "Email": ""} 
    ]`) 
    var I Identification 
    err := json.Unmarshal([]byte(jsonText), &I) 
    if err != nil { 
     fmt.Println(err) 
    } 
    I[0].ID = hashed 
    I[0].Phone = p 
    I[0].Email = e 

    result, error := json.Marshal(I) 
    if error != nil { 
     fmt.Println(error) 
    } 

    f, erro := os.OpenFile("FILE_PATH", os.O_APPEND|os.O_WRONLY, 0666) 
    if erro != nil { 
     fmt.Println(erro) 
    } 

    n, err := io.WriteString(f, string(result)) 
    if err != nil { 
     fmt.Println(n, err) 
    } 

} 

これは、ここで私の識別構造体です。

type Identification []struct { ID string Phone int64
Email string }

は基本的に、私は外にカッコをしたいし、それらの括弧の中、私は、複数のユーザーを追加します。このような何か:

[ 
    {"id":"A", "phone":17145555555, "email":"[email protected]"}, 
    {"id":"B","phone":15555555555,"email":"[email protected]"}, 
    {"id":"C","phone":14155555555,"email":"[email protected]"}, 
    {"id":"D","phone":17135555555,"email":"[email protected]"}, 
    {"id":"E","phone":17125555555,"email":"[email protected]"}, 
    {"id":"F","phone":17125555555,"email":"[email protected]"}, 
    {"id":"G","phone":14055555555,"email":"[email protected]"}, 
    {"id":"H","phone":13105555555,"email":"[email protected]"} 
    ] 

答えて

2

は、あなたの出力を達成follows-

type Identification struct { 
    ID string 
    Phone int64 
    Email string 
} 

として構造体を定義し、上記の説明のfollows-

// define slice of Identification 
var idents []Identification 

// Unmarshall it 
err := json.Unmarshal([]byte(jsonText), &idents) 

// add further value into it 
idents = append(idents, Identification{ID: "ID", Phone: 15555555555, Email: "Email"}) 

// now Marshal it 
result, error := json.Marshal(idents) 

// now result has your targeted JSON structure 

サンプルプログラムとしての動作を実行するにはhttps://play.golang.org/p/67dqOaCWHI

+0

構造体を私の方法で定義した唯一の理由は、私がそれを繰り返すことができるようにすることでした:インデックス用:=範囲識別。どのように私はあなたの構造を反復することができますか?反復の理由は、私がユーザーを複製していないことを確認することです。 –

+0

'idents'値を反復することができます。 – jeevatkm

+0

申し訳ありませんが、 "idents value"を反復することはどういう意味ですか? –

関連する問題