json.Marshal (স্ট্রাক্ট) "" returns "প্রদান করে


128
type TestObject struct {
    kind string `json:"kind"`
    id   string `json:"id, omitempty"`
    name  string `json:"name"`
    email string `json:"email"`
}

func TestCreateSingleItemResponse(t *testing.T) {
    testObject := new(TestObject)
    testObject.kind = "TestObject"
    testObject.id = "f73h5jf8"
    testObject.name = "Yuri Gagarin"
    testObject.email = "Yuri.Gagarin@Vostok.com"

    fmt.Println(testObject)

    b, err := json.Marshal(testObject)

    if err != nil {
        fmt.Println(err)
    }

    fmt.Println(string(b[:]))
}

এখানে ফলাফল:

[ `go test -test.run="^TestCreateSingleItemResponse$"` | done: 2.195666095s ]
    {TestObject f73h5jf8 Yuri Gagarin Yuri.Gagarin@Vostok.com}
    {}
    PASS

জেএসএন কেন মূলত খালি?

উত্তর:


233

আপনাকে করার প্রয়োজন রপ্তানি ক্ষেত্র নাম প্রথম অক্ষর বড় পুঁজি করে TestObject ক্ষেত্র। পরিবর্তন kindকরার জন্য Kindইত্যাদি।

type TestObject struct {
 Kind string `json:"kind"`
 Id   string `json:"id,omitempty"`
 Name  string `json:"name"`
 Email string `json:"email"`
}

এনকোডিং / জসন প্যাকেজ এবং অনুরূপ প্যাকেজগুলি অপ্রমাণিত ক্ষেত্রগুলিকে উপেক্ষা করে।

`json:"..."`স্ট্রিং যে ক্ষেত্র ঘোষণা অনুসরণ করে struct হয় ট্যাগ । এই স্ট্রাক্টের ট্যাগগুলি JSON এ এবং মার্শাল করার সময় স্ট্রাক্টের ক্ষেত্রগুলির নাম নির্ধারণ করে।

playground


"অ্যামিটম্পটি" এর আগে কোনও "স্পেস" থাকার কথা নেই
ড্যামন

আমি কি ছোট চিঠি দিয়ে তৈরি করতে পারি?
ব্যবহারকারী 123456

আপনি ছোট চিঠি ট্যাগ চান ক্ষেত্র stackoverflow.com/questions/21825322/...
user123456

1
@ user123456 jsonক্ষেত্রের ট্যাগ ব্যবহার করে (এই উত্তরের শেষ অনুচ্ছেদে বর্ণিত) জেএসএন ফিল্ডের নামটি একটি ছোট হাতের নামটিতে সেট করুন ।
মাফিন শীর্ষ

28
  • প্রথম অক্ষরটি মূলধন হয়ে গেলে, সনাক্তকারীটি কোনও কোডের যে অংশটি আপনি ব্যবহার করতে চান তা সর্বজনীন।
  • প্রথম অক্ষরটি যখন ছোট হাতের হয় , তখন সনাক্তকারীটি ব্যক্তিগত হয় এবং এটি ঘোষিত প্যাকেজটির মধ্যেই অ্যাক্সেস করা যায়।

উদাহরণ

 var aName // private

 var BigBro // public (exported)

 var 123abc // illegal

 func (p *Person) SetEmail(email string) {  // public because SetEmail() function starts with upper case
    p.email = email
 }

 func (p Person) email() string { // private because email() function starts with lower case
    return p.email
 }

3
অসাধারণ মানুষ, নিখুঁত কাজ করুন কেবল প্রথম চিঠিটি UPPER CASE এ পরিবর্তন করুন, আপনাকে অনেক ধন্যবাদ
vuhung3990

2
ঠিক ঠিক In Go, a name is exported if it begins with a capital letter,। এটিকে প্রসঙ্গে রাখতে, এই গো বেসিক ট্যুরটি দেখুন
মহসিন

3

গোলাঙে

কাঠামোর প্রথম অক্ষরের অবশ্যই বড় হাতের অক্ষর থাকতে হবে। ফোনেম্বার -> ফোন নাম্বার

======= বিশদ যুক্ত করুন

প্রথমত, আমি এই জাতীয় কোডিংয়ের চেষ্টা করছি

type Questions struct {
    id           string
    questionDesc string
    questionID   string
    ans          string
    choices      struct {
        choice1 string
        choice2 string
        choice3 string
        choice4 string
    }
}

গোলং সংকলন ত্রুটি নয় এবং সতর্কতা প্রদর্শন করে না। কিন্তু প্রতিক্রিয়া খালি কারণ কিছু

এর পরে, আমি গুগলে এই নিবন্ধটি সন্ধান করেছি

স্ট্রাক্ট প্রকার এবং স্ট্রাক্ট ধরণের লিটারালস নিবন্ধটি তখন ... আমি কোড সম্পাদনা করার চেষ্টা করি।

//Questions map field name like database
type Questions struct {
    ID           string
    QuestionDesc string
    QuestionID   string
    Ans          string
    Choices      struct {
        Choice1 string
        Choice2 string
        Choice3 string
        Choice4 string
    }
}

কাজ হয়।

সাহায্য আশা করি।


1
আরও বিশদ যুক্ত করুন
তুলিল

হ্যাঁ, আমি আরও বিশদ যুক্ত করছি।
সুপারআপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.