I am developing a website using Go for back-end and Angular for front-end. In Go, I fetch raw data from database and reference fixed setting table(JSON formatted) then overwrite to corresponding columns.
Raw data look like this:
Site Code Main
0700-Shift 010_A
2135-Packing 030_C
3343-Check 050_E
4355-Casting 080_H
6903-ReDo Test 020_B
2277-Scope chk 040_D
I cut some part of setting table:
[{"010_A": [
{
"Code1": "010_01",
"Code2": "",
"Seq": "000 Start",
},
{
"Code1": "010_07",
"Code2": "010_0700",
"Seq": "010 Shift"
},
],
"020_B": [{
"Code1": "020_69",
"Code2": "",
"Seq": "000 ReDo Test"
},
{
"Code1": "020_27",
"Code2": "",
"Seq": "000 Redo Combine"
}
],
"080_H": [
{
"Code1": "080_06",
"Code2": "",
"Seq": "005 Merge"
},
{
"Code1": "080_43",
"Code2": "",
"Seq": "010 Casting"
},
{
"Code1": "080_66",
"Code2": "080_6621",
"Seq": "100 Cooling"
}
]}]
And the Go struct for setting table is:
type Settingtable struct {
Code1 string
Code2 string
Seq string
}
I using "Main" to check setting table "010_A" to "080_H" first, if match then use first 4 digits of "Code" to check "Code2" in setting table. If "Main" and "Code2" all match then return "Seq" and paste to "Site" column.
The following is where I stuck in:
package main
import (
"encoding/json"
"fmt"
)
func main() {
var jsonBlob = []byte(`[
{"010_A": [
{
"Code1": "010_02",
"Code2": "010_0231",
"Seq": "000 Start"
},
{
"Code1": "010_08",
"OP_CODE": "010_0822",
"Seq": "010 Shift"
}
],
"020_B": [{
"Code1": "020_69",
"Code2": "020_7011",
"Seq": "000 ReDo Test"
},
{
"Code1": "020_27",
"Code2": "",
"Seq": "000 Redo Combine"
}
],
"080_H": [
{
"Code1": "080_06",
"Code2": "",
"Seq": "005 Merge"
},
{
"Code1": "080_43",
"Code2": "",
"Seq": "010 Casting"
},
{
"Code1": "080_66",
"Code2": "080_6621",
"Seq": "100 Cooling"
}
]}
]`)
type Record map[string][]map[string]string
var records []Record
err := json.Unmarshal(jsonBlob, &records)
if err != nil {
fmt.Println("error:", err)
}
fmt.Printf("%+v
", records)
if v, s := records[0]["020_B"][0]["Code2"]; s {
fmt.Println("ok:", v)
}
}
It only return first result not to mention what the next function I want to do (loop input search condition, paste to raw data column..)