#1:
我一直在努力解散我不认为特别复杂的东西 GO中的JSON响应。 (我很新)。示例如下:
{ "eventId": "tevtNKIsHrFQTyyMeYDMc5jgQ1459184873000",
"sessionId": "1016Q-vnpnlQwCiLiyH7e_cNg",
"targets":
[ { "id": "00u34k73otQGIAFUALPR", "displayName": "okta admin", "login": "oktaadmin@okta.com", "objectType": "User" } ] }
我尝试将其表示为一个结构数组,但它似乎永远不会连接。
我把我的代码放在GO Lang游乐场,如果有人可以看看我会非常 赞赏。
答案 0 :(得分:1)
对于大型json文档,我建议您使用此工具:https://mholt.github.io/json-to-go/
你会得到类似的东西:
class Neighbor {
public int vertexNum;
public Neighbor next;
public Neighbor(int vnum, Neighbor nbr) {
this.vertexNum = vnum;
next = nbr;
}
}
class Vertex {
String name;
Neighbor adjList;
Vertex(String name, Neighbor neighbors) {
this.name = name;
this.adjList = neighbors;
}
}
private void dfs(int v, boolean[] visited) {
visited[v] = true;
System.out.println("visiting " + adjLists[v].name);
for (Neighbor nbr=adjLists[v].adjList; nbr != null; nbr=nbr.next) {
if (!visited[nbr.vertexNum]) {
System.out.println("\n" + adjLists[v].name + "--" + adjLists[nbr.vertexNum].name);
dfs(nbr.vertexNum, visited);
}
}
}
public void dfs() {
boolean[] visited = new boolean[adjLists.length];
for (int v=0; v < visited.length; v++) {
if (!visited[v]) {
System.out.println("\nSTARTING AT " + adjLists[v].name);
dfs(v, visited);
}
}
}
完整示例:https://play.golang.org/p/Q8PwwtS_QZ
此外,您始终可以使用type AutoGenerated struct {
EventID string `json:"eventId"`
SessionID string `json:"sessionId"`
RequestID string `json:"requestId"`
Published time.Time `json:"published"`
Action struct {
Message string `json:"message"`
Categories []string `json:"categories"`
ObjectType string `json:"objectType"`
RequestURI string `json:"requestUri"`
} `json:"action"`
Actors []struct {
ID string `json:"id"`
DisplayName string `json:"displayName"`
Login string `json:"login,omitempty"`
ObjectType string `json:"objectType"`
IPAddress string `json:"ipAddress,omitempty"`
} `json:"actors"`
Targets []struct {
ID string `json:"id"`
DisplayName string `json:"displayName"`
Login string `json:"login"`
ObjectType string `json:"objectType"`
} `json:"targets"`
}
而不是结构。
答案 1 :(得分:0)
请更改结构如下。
type zMessage struct {
Message string `json:"message"`
}
type zTargets struct {
Idtarget string `json:"id"`
}
var val struct {
Targets [] zTargets `json:"targets"`
}
您将在编码时打印目标ID。
{[{00u34k73otQGIAFUALPR}]}
答案 2 :(得分:0)
您需要修改结构并使用此示例中的代码:
package main
import (
"encoding/json"
"fmt"
)
type MyJSON struct {
EventID string `json:"eventID"`
SessionID string `json:"sessionID"`
Targets []MyTargets `json:"targets"`
}
type MyTargets struct {
Id string `json:"id"`
DisplayName string `json:"displayName"`
Login string `json:"login"`
ObjectType string `json:"objectType"`
}
func main() {
myJson := []byte(`{
"eventId": "tevtNKIsHrFQTyyMeYDMc5jgQ1459184873000",
"sessionId": "1016Q-vnpnlQwCiLiyH7e_cNg",
"targets": [
{
"id": "00u34k73otQGIAFUALPR",
"displayName": "okta admin",
"login":"oktaadmin@okta.com",
"objectType": "User"
}
]
}`)
myStruct := MyJSON{}
json.Unmarshal(myJson, &myStruct)
fmt.Printf(`
eventId: %s
sessionID: %s
targets.id: %s
targets.displayName: %s
targets.login: %s
targets.objectType: %s
`, myStruct.EventID, myStruct.SessionID,
myStruct.Targets[0].Id,
myStruct.Targets[0].DisplayName,
myStruct.Targets[0].Login,
myStruct.Targets[0].ObjectType)
}
输出:
eventId: tevtNKIsHrFQTyyMeYDMc5jgQ1459184873000
sessionID: 1016Q-vnpnlQwCiLiyH7e_cNg
targets.id: 00u34k73otQGIAFUALPR
targets.displayName: okta admin
targets.login: oktaadmin@okta.com
targets.objectType: User
中查看此代码