我想使用Go语言从MySQL数据库中读取数据。脚本就像这样
const size_t BIT_LENGTH = 16;
static unsigned char bit_pwd[] = {0x13, 0x4E, 0x83, 0xF4, 0xEC, 0xBC, 0xDD, 0xB4, 0x77, 0xEF, 0x7F, 0x4B, 0xB0, 0xC8, 0x03, 0x1E};
static unsigned char chr_pwd[BIT_LENGTH * 2];
char *getPwd() {
unsigned char c1 = 0x80;
unsigned char c2 = c1;
unsigned char *p = chr_pwd;
memset(chr_pwd, '\0', BIT_LENGTH * 2);
for (jint i = 0; i < BIT_LENGTH; i++) {
if (i % 2 != 0) {
bit_pwd[i] ^= c1++;
}
else {
bit_pwd[i] ^= c2--;
}
p += sprintf((char *) p, "%02X", bit_pwd[i]);
}
chr_pwd[BIT_LENGTH * 2] = '\0';
return (char *) chr_pwd;
}
// You will get real password ("93CEFC75923EA0370B6B04CECA4E7A99") from getPwd method.
_objGetWritableDatabase = env->CallObjectMethod(obj, _midGetWritableDatabase, env->NewStringUTF(getPwd()));
返回的数据将保存到对象Struct中。结构就像这样
func GetAllCountry() []*Country{
dbConnection := db.ConnectMySQL()
rows, err := dbConnection.Query("SELECT id, country_code, country_name, phone_code, icon FROM country;")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
country := new(Country)
var countries []*Country
for rows.Next() {
err := rows.Scan(&country.id, &country.country_code, &country.country_name, &country.phone_code, &country.icon)
if err != nil {
log.Fatal(err)
}
countries = append(countries, country)
fmt.Println(country)
}
return countries
}
在其他文件中,我正在创建一个获取所有数据的函数。我调用该函数,然后将其转换为type Country struct {
id int `json:"Country.id"`
country_code string `json:"Country.country_code"`
country_name string `json:"Country.country_name"`
phone_code string `json:"Country.phone_code"`
icon string `json:"Country.icon"`
}
,因为它曾经将它发送到MessageBroker。
以下是将其转换为[]byte
[]byte
但func GetCountry(msg string) []byte {
// country := new(countryModel.Country)
var countries []*countryModel.Country
countries = countryModel.GetAllCountry()
log.Println("Show result: ", countries)
jsResult, err := json.Marshal(countries)
if err != nil {
logger.Error(err, "Failed on GetCountry")
}
log.Println("Show result JSON: ", jsResult)
return jsResult
}
函数的返回结果不是我想要的。
在那个函数中,我得到了
GetCountry
我在控制台上显示数据。
[
{},
{}
]
请帮忙。
答案 0 :(得分:0)
正如@ M-AbdelRahman在评论中所提到的,您的Country
结构字段需要导出(以大写字母开头的那些)因为json.Marshal
跳过了未导出的字段(以小写字母开头的字段)以及您回复{}
的原因。
type Country struct {
Id int `json:"Country.id"`
CountryCode string `json:"Country.country_code"`
CountryName string `json:"Country.country_name"`
PhoneCode string `json:"Country.phone_code"`
Icon string `json:"Country.icon"`
}
您的扫描必须相应更改。
err := rows.Scan(&country.Id, &country.CountryCode, &country.CountryName, &country.PhoneCode, &country.Icon)