- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我刚开始接触golang,我需要从json字符串中获取数据。
{"data" : ["2016-06-21","2016-06-22","2016-06-25"], "sid" : "ab", "did" : "123"}
现在我尝试了一个类似的结构
type IntervalData struct {
Data json.RawMessage `json:"data"`
Did string `json:"did"`
Sid string `json:"sid"`
}
type IntervalDataList []string
和 json 解码代码,如
r := IntervalData{}
json.Unmarshal([]byte(json), &r)
log.Printf("Raw Body: %s", r)
log.Printf("Raw Date Json: %s", r.Data)
blist := IntervalDataList{}
json.Unmarshal([]byte(r.Data), &blist)
log.Printf("Date List : %s", blist)
此代码只能从 json 字符串获取 sid,而不是显示为空映射的数据。
从上面的 json 获取数据的方法是什么?
更新:问题已解决。我检查了我的输入 json 以 {"data":"[\"dsadsdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n\"sdsdadsddad\"]","did":"654646456","sid":"88683627434"}
格式出现,这不是必需的形式。然后我检查了客户端脚本并根据在线资源进行了更改。 How to JSONize a uint8 slice in Go?
type RequestData struct {
Data JSONableSlice `json:"data"`
Did string `json:"did"`
Sid string `json:"sid"`
}
type JSONableSlice []uint8
func (u JSONableSlice) MarshalJSON() ([]byte, error) {
var result string
if u == nil {
result = "null"
} khác {
result = strings.Join(strings.Fields(fmt.Sprintf("%d", u)), ",")
}
return []byte(result), nil
}
func ApiRequest(w http.ResponseWriter, r *http.Request) {
sid := r.Header.Get("sid")
deviceID := r.Header.Get("deviceId")
body, err := ioutil.ReadAll(r.Body)
failOnError(err, "Issue faced during reading post contents")
data := RequestData{
Data: body,
Sid: sid,
Did: dID,
}
bdata, err := json.Marshal(data)
// Some Rabbit MQ Connection code
// Rabbit MQ publish code
err = ch.Publish(
"", // exchange
q.Name, // routing key
false, // mandatory
false, // immediate
amqp.Publishing{
DeliveryMode: amqp.Persistent,
ContentType: "text/plain",
Body: bdata,
})
}
消费者代码现在不需要太多改动
type IntervalData struct {
//Data json.RawMessage `json:"data"`
Data []byte `json:"data"`
Did string `json:"did"`
Sid string `json:"sid"`
}
r := IntervalData{}
json.Unmarshal([]byte(json), &r)
log.Printf("Raw Body: %s", r)
log.Printf("Raw Date Json: %s", r.Data)
blist := IntervalDataList{}
json.Unmarshal(r.Data, &blist)
log.Printf("Date List : %s", blist)
câu trả lời hay nhất
在您的示例代码中,您指的是 r.data
,它是一个未导出 字段!但是您的类型 IntervalData
有一个 exported IntervalData.Data
字段!这是不一致的。
所以您的 IntervalData
很可能包含一个未导出 dữ liệu
字段,json
包忽略,只有导出的字段被编码/解码。
只需更改要导出的IntervalData.data
字段:IntervalData.Data
。
查看这个工作示例:
j := `{"data" : ["2016-06-21","2016-06-22","2016-06-25"], "sid" : "ab", "did" : "123"}`
r := IntervalData{}
json.Unmarshal([]byte(j), &r)
log.Printf("Raw Body: %s", r)
log.Printf("Raw Data Json: %s", r.Data)
blist := IntervalDataList{}
json.Unmarshal([]byte(r.Data), &blist)
log.Printf("Data List : %s", blist)
输出(在 Đi đến Sân chơi 上尝试):
2009/11/10 23:00:00 Raw Body: {["2016-06-21","2016-06-22","2016-06-25"] 123 ab}
2009/11/10 23:00:00 Raw Data Json: ["2016-06-21","2016-06-22","2016-06-25"]
2009/11/10 23:00:00 Data List : [2016-06-21 2016-06-22 2016-06-25]
另请注意 json.RawMessage
字段和第二次解码是不必要的,您可以将 Dữ liệu
定义为 IntervalDataList
类型,并且它适用于单个解码:
Data IntervalDataList `json:"data"`
和解码:
j := `{"data" : ["2016-06-21","2016-06-22","2016-06-25"], "sid" : "ab", "did" : "123"}`
r := IntervalData{}
json.Unmarshal([]byte(j), &r)
log.Printf("Raw Data Json: %s", r.Data)
输出(在 Đi đến Sân chơi 上试试):
2009/11/10 23:00:00 Raw Data Json: [2016-06-21 2016-06-22 2016-06-25]
关于json - golang 将具有数组列表的 json 转换为 golang 中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38588358/
Đây là đoạn mã. Vui lòng cho tôi biết thuật toán lưu trữ dữ liệu lớn trong bộ nhớ nhỏ này là gì. public static void main(String[] args) { long longValue = 21474836
Vì vậy tôi sử dụng imap để nhận email từ gmail và outlook. Gmail được mã hóa như thế này =?UTF-8?B?UmU6IM69zq3OvyDOtc68zrHOuc67IG5ldyBlbWFpb
Tôi đã học mã C từ lâu và muốn thử điều gì đó mới mẻ và khác biệt với Đề án. Tôi đang cố gắng tạo một thủ tục lấy hai đối số và trả về giá trị lớn hơn trong hai đối số đó, như (define (larger xy) (if (> x
Có hai tùy chọn cấu hình sao lưu cho kho Azure Recovery Services - LRS so với GRS Đây là câu hỏi về kho Azure Recovery Services. Làm cách nào để bạn xử lý kho lưu trữ Dịch vụ khôi phục có bật tính năng dự phòng địa lý khi khu vực chứa nó bị lỗi? Nếu dịch vụ khôi phục không được kích hoạt
Giả sử tôi có thực thể sau: @Entity public class A { @Id @GeneratedValue Private Long id; @Embedded Private;
Tôi có câu hỏi tiếp theo. Tôi có tiêu chí tiếp theo: Criteria.add(Restrictions.in("entity.otherEntity", getOtherEntitiesList()));
Nếu đây là bản sao của bất kỳ loại nào thì tôi sẽ đăng ký trước, nhưng tôi không thể tìm thấy bất kỳ điều gì giải quyết được vấn đề cụ thể của mình. Đây là chương trình của tôi: import java.util.Random; public class CarnivalGame{
Tôi hiện đang sử dụng golang để tạo một đường dẫn tổng hợp nơi tôi truy vấn các tài liệu bằng toán tử "$ hoặc". Kết quả là một loạt tài liệu chưa được nhóm cần được nhóm lại để tôi có thể chuyển sang giai đoạn tiếp theo là tìm điểm giao nhau giữa hai tập dữ liệu. Sau đó sử dụng nó để làm điều đó trong một bộ sưu tập riêng
Có thể tạo điều kiện OR trong biểu thức chính quy. Tôi đang cố gắng tìm kết quả khớp cho danh sách tên tệp chứa mẫu như vậy, trường hợp đầu tiên xxxxx-hello.file hoặc trường hợp hai xxxx-hello-unasigned.file
Chương trình này chỉ đơn giản tạo ra hình dạng của một viên kim cương khi người dùng nhập số hàng, do đó, nó có 6 vòng for; 3 vòng để tạo hình tam giác đầu tiên, 3 vòng để tạo hình tam giác còn lại và với 2 hình tam giác và 6 vòng này, chúng tôi có một hình thoi và đây là toàn bộ chương trình
Tôi có một chuỗi truy vấn như thế này www.google.com?Department=Education & Finance&Department=Health Tôi có các thẻ li này và chuỗi truy vấn của chúng giống như thế này
Tôi có một lớp với hàm tạo tĩnh mà tôi sử dụng để đọc các giá trị app.config. Cách kiểm tra đơn vị một lớp có các giá trị cấu hình khác nhau. Tôi đang nghĩ đến việc chạy từng thử nghiệm trong một miền ứng dụng khác để tôi có thể thực hiện một hàm tạo tĩnh cho mỗi thử nghiệm - nhưng tôi
Tôi đang tìm một vùng chứa có thể chứa nhiều khóa, nếu tôi nhập giá trị dành riêng (ví dụ: 0) cho một trong các giá trị khóa, nó sẽ được coi là tìm kiếm OR. bản đồ, int > myContainer; myContainer.insert(make_
Tôi đang tạo cơ sở dữ liệu cho một ứng dụng web và đang tìm kiếm một số lời khuyên về cách lập mô hình một thực thể duy nhất có thể có nhiều loại, mỗi loại có các thuộc tính khác nhau. Ví dụ: giả sử tôi muốn tạo một mô hình quan hệ cho đối tượng "nguồn dữ liệu". Tất cả các nguồn dữ liệu sẽ có một số thuộc tính chung
(1) =>TẠO BẢNG T1(id BIGSERIAL PRIMARY KEY, tên TEXT); TẠO BẢNG (2) =>CHÈN VÀO T1 (tên)
Tôi không chắc chắn cách giải quyết các tham chiếu cột không rõ ràng khi sử dụng bí danh. Giả sử có hai bảng a và b, cả hai đều có cột tên. Nếu tôi nối hai bảng này và thêm bí danh vào kết quả, tôi không biết cách tham chiếu cột tên cho cả hai bảng. Tôi đã thử một số biến thể,
Truy vấn của tôi là: select * from table trong đó id IN (1,5,4,3,2) Điều tôi muốn chính xác là cùng một thứ tự, không phải từ 1...5 mà từ 1,5,4, 3,2. Làm thế nào tôi có thể làm điều này? hầu hết
Tôi đang sử dụng mã C# để thực thi truy vấn MySQL được tạo động. Ném ngoại lệ: TẠO TABLE kết xuất ("@employee_OID" VARCHAR(50)); "{"Bạn có một er
Tôi có ngày 2016-03-30T23:59:59.000000+0000. Tôi có thể biết định dạng của nó là gì không? Bởi vì nếu tôi sử dụng yyyy-MM-dd'T'HH:mm:ss.SSS thì nó sẽ ném ra ngoại lệ Sim trả lời hay nhất
Tôi có một lược đồ mẫu và Fiddle SQL của nó như sau: http://sqlfiddle.com/#!2/6816b/2 Fiddle này chỉ đơn giản truy vấn cơ sở dữ liệu mẫu dựa trên các điều kiện trong mệnh đề Where như sau:
Tôi là một lập trình viên xuất sắc, rất giỏi!