小编Joe*_*vin的帖子

Golang JSON omitempty with time.Time Field

试图让json Marshal包含2个时间字段的结构.但是如果它有时间价值,我只希望该字段能够通过.所以我正在使用,json:",omitempty"但它不起作用.

我可以将Date值设置为什么,因此json.Marshal会将其视为空(零)值,而不是将其包含在json字符串中?

游乐场:http://play.golang.org/p/QJwh7yBJlo

实际结果:

{ "时间戳": "2015-09-18T00:00:00Z", "日期": "0001-01-01T00:00:00Z"}

期望的结果:

{ "时间戳": "2015-09-18T00:00:00Z"}

码:

package main

import (
    "encoding/json"
    "fmt"
    "time"
)

type MyStruct struct {
    Timestamp time.Time `json:",omitempty"`
    Date      time.Time `json:",omitempty"`
    Field     string    `json:",omitempty"`
}

func main() {
    ms := MyStruct{
        Timestamp: time.Date(2015, 9, 18, 0, 0, 0, 0, time.UTC),
        Field:     "",
    }

    bb, err := json.Marshal(ms)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(bb))
}
Run Code Online (Sandbox Code Playgroud)

time json struct go

32
推荐指数
3
解决办法
1万
查看次数

Go:使用结构字段(而不是json键)将结构写入Json文件

如何将json文件读入结构体,然后将其作为键(而不是原始的json键)备份为json字符串?

(见Desired Output to Json File下文......)

码:

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
)

type Rankings struct {
    Keyword  string `json:"keyword"`
    GetCount uint32 `json:"get_count"`
    Engine   string `json:"engine"`
    Locale   string `json:"locale"`
    Mobile   bool   `json:"mobile"`
}

func main() {
    var jsonBlob = []byte(`
        {"keyword":"hipaa compliance form", "get_count":157, "engine":"google", "locale":"en-us", "mobile":false}
    `)
    rankings := Rankings{}
    err := json.Unmarshal(jsonBlob, &rankings)
    if err != nil {
        // nozzle.printError("opening config file", err.Error())
    }

    rankingsJson, _ := json.Marshal(rankings)
    err = ioutil.WriteFile("output.json", rankingsJson, 0644)
    fmt.Printf("%+v", …
Run Code Online (Sandbox Code Playgroud)

json go

12
推荐指数
1
解决办法
3万
查看次数

Javascript下载字符串

尝试在Javascript中启动浏览器下载,但我想要下载的数据是字符串,而不是文件.我知道如果它是一个文件,以下会这样做:

window.location.href = '/filepath/file.csv';
Run Code Online (Sandbox Code Playgroud)

如何才能获得相同的效果,只能使用字符串(使用csv数据),而不是服务器上已存在的文件?

javascript

9
推荐指数
1
解决办法
1万
查看次数

如何展平嵌套的 JSON

试图将嵌套的 json 响应从 2 级深展平到 1 级。

这是我在 Go Playground 上的工作代码:http : //play.golang.org/p/kHAYuZUTko

我想结束:

type Social struct {
    GooglePlusPlusOnes  uint32 `Social:"GooglePlusOne"`
    TwitterTweets       uint32 `json:"Twitter"`
    LinkedinShares      uint32 `json:"LinkedIn"`
    PinterestPins       uint32 `json:"Pinterest"`
    StumbleuponStumbles uint32 `json:"StumbleUpon"`
    DeliciousBookmarks  uint32 `json:"Delicious"`
    FacebookLikes       uint32 `json:"??some_magical_nested_address??"`
    FacebookShares      uint32 `json:"??some_magical_nested_address??"`
    FacebookComments    uint32 `json:"??some_magical_nested_address??"`
    FacebookTotal       uint32 `json:"??some_magical_nested_address??"`
}
Run Code Online (Sandbox Code Playgroud)

...而不是Social包含嵌套Facebook类型的类型(见下面的代码)。

我怀疑我需要做一个自定义UnmarshalJSON函数,但我不知道这些是如何工作的,而且我是 Go 的新手。

建议?


这是上面Go Playground 链接中的代码:

package main

import (
    "encoding/json"
    "fmt"
)

type Social struct {
    GooglePlusPlusOnes  uint32 `json:"GooglePlusOne"` …
Run Code Online (Sandbox Code Playgroud)

json go unmarshalling

5
推荐指数
2
解决办法
8834
查看次数

Golang:转换为JSON.GZ并写入文件

尝试使用我的数据完成以下输出:

  1. 转换为JSON字符串并写入file:output.json(此部分正常工作)
  2. Gzip压缩JSON字符串并将其写入json.gz文件:output.json.gz(NOT WORKING)

代码运行正常并写入两个文件.但是当我尝试解压缩时,gzip压缩文件会出现此错误:Data error in 'output.json'. File is broken

这是代码:

package main

import (
    "bytes"
    "compress/gzip"
    "encoding/json"
    "fmt"
    "io/ioutil"
)

type Generic struct {
    Name string
    Cool bool
    Rank int
}

func main() {
    generic := Generic{"Golang", true, 100}
    fileJson, _ := json.Marshal(generic)
    err := ioutil.WriteFile("output.json", fileJson, 0644)
    if err != nil {
        fmt.Printf("WriteFileJson ERROR: %+v", err)
    }

    var fileGZ bytes.Buffer
    zipper := gzip.NewWriter(&fileGZ)
    defer zipper.Close()
    _, err = zipper.Write([]byte(string(fileJson)))
    if err != nil { …
Run Code Online (Sandbox Code Playgroud)

json gzip go

5
推荐指数
1
解决办法
2381
查看次数

Go:将字符串数组转换为Json数组字符串

试图在Go中将字符串数组转换为json字符串.但我得到的只是一系列数字.

我错过了什么?

package main

import (
    "fmt"
    "encoding/json"
)

func main() {
    var urls = []string{
        "http://google.com",
        "http://facebook.com",
        "http://youtube.com",
        "http://yahoo.com",
        "http://twitter.com",
        "http://live.com",
    }

    urlsJson, _ := json.Marshal(urls)
    fmt.Println(urlsJson)
}
Run Code Online (Sandbox Code Playgroud)

Go Play上的代码:http://play.golang.org/p/z-OUhvK7Kk

json go

4
推荐指数
1
解决办法
5202
查看次数

获取单个 mysqli 查询中插入的所有行的 insert_id (多个值)

使用 PHP 并使用 MYSQLI。尝试获取从具有多个值的单个插入查询插入的所有行的 insert_id。将其保留在一次调用中以提高效率。我的实际代码在一个插入查询中有数百个值。不过,这里有一些仅包含 4 个值的插入的示例代码:

$sql = "INSERT INTO link_tags ( string_names_id, urls_id ) 
    VALUES ( '2', '17' ), ( '8', '31' ), ( '8', '1' ), ( '8', '4' )";

$mysqli->query($sql);

echo "id's: " .$mysqli->insert_id;
Run Code Online (Sandbox Code Playgroud)

上面的代码实现了插入,但只给出了调用中第一个插入的 id。如何检索该单个查询的所有 ID?

php mysql mysqli mysql-insert-id

3
推荐指数
1
解决办法
3506
查看次数

BigQuery:散列字符串与CityHash不匹配

试图让我的外部CityHash返回与BigQuery Hash()相同的值.以下是我要匹配的值: BigQuery Hash示例

匹配的唯一哈希字符串是空字符串.

BigQuery查询参考中,它提到它使用CityHash库.我已经尝试过为CityHash使用多个外部库,它们彼此都是一致的,但不是BigQuery Hash()

以下是Go(Golang)的CityHash示例:

package main

import (
    "fmt"

    "bitbucket.org/creachadair/cityhash"
)

func main() {
    var bytesToHash = []byte("mystringtohash")

    myHash := int64(cityhash.Hash64(bytesToHash))
    fmt.Printf("Hashed version of '%s': %d\n", bytesToHash, myHash)

    bytesToHash = []byte("")
    myHash = int64(cityhash.Hash64(bytesToHash))
    fmt.Printf("Hashed version of '%s': %d\n", bytesToHash, myHash)
}
Run Code Online (Sandbox Code Playgroud)

这是我的程序的输出:

Hashed version of 'mystringtohash': -6615946700494525143
Hashed version of '1234': 882600748797058222
Hashed version of '': -7286425919675154353
Run Code Online (Sandbox Code Playgroud)

在散列之前,BigQuery是否对字符串做了一些特殊的事情?

hash google-bigquery

3
推荐指数
1
解决办法
429
查看次数