2015-01-03 3 views
1

데이터베이스에서 JSON 데이터를 가져 오려고하면 다음과 같이 나타납니다.
{ "time": "13:42:21 11.12.14", ":": "Привет "}
{"시간 ":"13시 42분 25초 11.12.14 ",": ":"Эй "}Martini에서 JSON 인코딩 오류가 발생했습니다.

var time string 
var text string 

type chatbetweenusers struct { 
    Time string `json:"time"` 
    Text string `json:":"text"` 
    } 

var buffer bytes.Buffer 
    db, err := sql.Open("sqlite3", "./database.db"); if err != nil { 
     log.Fatal(err) 
    }; defer db.Close() 

rows, err := db.Query("select time, text from messages;") 
    if err != nil { 
     log.Fatal(err) 
    } 
    defer rows.Close() 


    for rows.Next() { 
     // give a names for every column from query result 
     err := rows.Scan(&time, &text) 
     if err != nil { 
      log.Fatal(err) 
     } 
     // add strings to struct 
     chatitem := &chatbetweenusers{time, text} 
     log.Println(chatitem) 

     // format it to JSON! 
     b, err := json.Marshal(chatitem) 
     // conver JSON into string to return from Martini 
     s := string(b[:]) 
     buffer.WriteString(s) 
    } 

return buffer.String() 
}) 

그리고 데이터베이스에서 다른 데이터를 얻기 위해 노력하고있어 I {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} { } {} {} {} {} {} {} {} {} {} {} {}

var text string 
var user1 string 

type chatbetweenusers struct { 
    Text string `json:":"text"` 
    User1 string `json:":"user1"` 
    } 

var buffer bytes.Buffer 
    db, err := sql.Open("sqlite3", "./database.db"); if err != nil { 
     log.Fatal(err) 
    }; defer db.Close() 

rows, err := db.Query("select text, user1 from messages;") 
    if err != nil { 
     log.Fatal(err) 
    } 
    defer rows.Close() 


    for rows.Next() { 
     // give a names for every column from query result 
     err := rows.Scan(&text, &user1) 
     if err != nil { 
      log.Fatal(err) 
     } 
     // add strings to struct 
     chatitem := &chatbetweenusers{text, user1} 
     log.Println(chatitem) 

     // format it to JSON! 
     b, err := json.Marshal(chatitem) 
     // conver JSON into string to return from Martini 
     s := string(b[:]) 
     buffer.WriteString(s) 
    } 

return buffer.String() 
}) 

JSON에서 다른 데이터를 합성하면 어떻게됩니까? 가능한 모든 시도했지만 제대로 작동하지 않습니다.

답변

1

구조를 정의하는 방법을 고려하십시오. 첫 번째 경우에

는 :

type chatbetweenusers struct { 
    Time string `json:"time"` 
    Text string `json:":"text"` 
} 

텍스트에 관련된 태그의 구문이 잘못되었습니다. 그것은해야한다 : 두 번째 경우

Text string `json:"text"` 

:

type chatbetweenusers struct { 
    Text string `json:":"text"` 
    User1 string `json:":"user1"` 
} 

모두 태그에 관련된 구문이 잘못되었습니다. 그들은해야한다 "USER1"``: https://play.golang.org/p/rirtTsTVWT

+0

가 어떻게''JSON을 해석 이동 않습니다

여기
Text string 'json:"text"' User1 string 'json:"user1"' 

놀이터의 예입니다? – wkcamp

+0

Go는이 문자열을 해석하지 않습니다. 그러나 encoding/json 패키지는 리플렉션 API를 사용하여 구조체 정의에서 문자열을 추출한 다음 구문 분석합니다. http://golang.org/pkg/encoding/json/#Marshal에 설명 된 내용을 해석합니다. –