11 lines
1.1 KiB
Go
11 lines
1.1 KiB
Go
// Synthetic representation experiment only. No policy, crypto, credential or transport.
|
|
package main
|
|
import("bytes";"encoding/json";"os")
|
|
type vector struct {Target string `json:"input_target_json"`; Binding string `json:"canonical_binding_utf8"`}
|
|
func main(){var input struct{Vectors []vector `json:"native_binding_vectors"`};if json.NewDecoder(os.Stdin).Decode(&input)!=nil{os.Exit(2)};rows:=[]map[string]string{}
|
|
for _,v:=range input.Vectors{var normal any;if json.Unmarshal([]byte(v.Target),&normal)!=nil{os.Exit(2)};defaultTarget,_:=json.Marshal(normal)
|
|
var numbers any;d:=json.NewDecoder(bytes.NewBufferString(v.Target));d.UseNumber();if d.Decode(&numbers)!=nil{os.Exit(2)};numberTarget,_:=json.Marshal(numbers)
|
|
var act map[string]json.RawMessage;if json.Unmarshal([]byte(v.Binding),&act)!=nil{os.Exit(2)};act["target"]=json.RawMessage(v.Target);rawAct,_:=json.Marshal(act)
|
|
rows=append(rows,map[string]string{"raw_target":v.Target,"go_default_target":string(defaultTarget),"use_number_target":string(numberTarget),"raw_message_act_draft":string(rawAct)})
|
|
};json.NewEncoder(os.Stdout).Encode(rows)
|
|
}
|