2016-03-25 20 views
0

Ben bir yapı var çalışmıyor. Başvuru etiketlerini dahil her BununlaGolang JSON yapı

, bu alanlar daha sonra, ben

{ application_id: '', 
    application_key: '', 
    password: 'myPassword', 
    username: 'myUsername' 
} 

olsun Ama etiketinin ya kaldırırsanız (şimdiye ApplicatinonId veya ApplicationKey etiketi kaldırmak) benim POST istek üzerine, yani boş olmak

func getCredentials() Credentials { 
    raw, err := ioutil.ReadFile(os.Getenv("BASE_PATH") + FILE_Credentials) 
    if err != nil { 
     log.Warn("Could not read credentials file: %s", err.Error()) 
     os.Exit(1) 
    } 

    var credentials Credentials 
    json.Unmarshal(raw, &credentials) 
    return credentials 
} 

benim kimlik: bu alanın

İşte

benim yapı oluşturma şekilleridir kendini göstermektedir 210 dosyasıdır:

{ 
    "Username": "myUsername", 
    "Password": "myPassowrd", 
    "ApplicationId": "someID", 
    "ApplicationKey": "someString" 
} 

Sonra ben ile benim veri göndermek:

credentials := getCredentials() 
url := GetLoginURL() 

resp, body, requestErr := gorequest.New(). 
    Post(url). 
    Send(credentials). 
    End() 

Ama sunucuda, ben de application_id ve application_key olarak boş dizeleri olsun. Ancak ilgili etiketi kaldırırsam, o alan

+0

sorunu minimize etmek için lütfen en az bir örnek gösterin – JimB

+0

@JimB, Sadece soruğım güncellendi – Kousha

+0

dosyanızın anahtarı yok: 'application_id' and' application_key' – JimB

cevap

0

Örnek dosyadan yola çıkarak, Go'daki yapınız bu şekilde görünmelidir;

type Credentials struct { 
    Username string `json:"Username"` 
    Password string `json:"Password"` 
    ApplicationId string `json:"ApplicationId"` 
    ApplicationKey string `json:"ApplicationKey"` 
} 
Ayrıca diğer ucundan bu yaklaşım ve bu gibi görünecek şekilde dosyasındaki girdileri değiştirebilir

;

{ 
    "Username": "myUsername", 
    "Password": "myPassowrd", 
    "application_id": "someID", 
    "application_key": "someString" 
} 

Ancak, bu yüzden genellikle kaynak değiştirerek sona (üçüncü taraf API çağrılırken gibi) alıyorsanız verileri değiştiremez durum daha sık bu. Dosyayı kontrol ettiğinizden ve API küçük harf istediğinden API içeriğini gönderdiğinize uygun olarak dosya içeriğini değiştirmenizi tavsiye ederim. Bazen gerekli olan diğer seçenek, başka bir tür kullanmak ve bir dönüşüm yardımcısı sağlamaktır (ne dosyayı ne de API'yi kontrol ettiğiniz varsayılarak, her biri için farklı türlere gereksiniminiz vardır). Go kodlama paketleri çok sıkıdır. Yakın eşleşmeleri atayacak olan json.NET gibi şeylere alışkın olabilirsiniz. Tam eşleşmeden daha az bir şey, Unmarshal'dan bir hata verecektir.

2

gönderilir. Kimlik bilgileriniz yanlış görünüyor (application_id ve application_key tuşlarını kullanmak zorundadır - Git, büyük harf kullanımını değil, alt çizgilerini belirlemek için yeterince akıllıdır) :

{ 
    "Username": "myUsername", 
    "Password": "myPassowrd", 
    "application_id": "someID", 
    "application_key": "someString" 
}