当前位置: 首页 > 面试题库 >

如何在golang中将动态生成的数组对象数据转换为JSON格式的字符串?

宿衡虑
2023-03-14
问题内容

在数据检索中,数据采用数组对象的形式,如下所示:

[{1 fruits Apple Apple is my favorite fruit.} {2 colors Red Red color is always charming.} {3 flowers Lotus It is one of the most beautiful flowers in this world.}]

如何在JSON中更改它。我只需要打破数组对象括号[]。

我已经尝试过了Marshal。但这给了我像:

[{"id":1,"category":"fruits","name":"Apple","description":"Apple is my favorite fruit."},{"id":2,"category":"colors","name":"Red","description":"Red color is always charming."},{"id":3,"category":"flowers","name":"Lotus","description":"It is one of the most beautiful flowers in this world."}]

我尝试过的代码

结构

type Item struct {
 Id          int    `json:"id"`
 Category    string `json:"category"`
 Name        string `json:"name"`
 Description string `json:"description"`
} 
type Items []Item

这里的数据检索功能

func GetData(productQuery interface{}) (result Items, err error) {
 mongoSession := ConnectDb()
 sessionCopy := mongoSession.Copy()
 defer sessionCopy.Close()
 getCollection := mongoSession.DB("custom").C("custom")
 err = getCollection.Find(productQuery).Select(bson.M{"password": 0}).All(&result) //.Skip(skip).Limit(limit)
 if err != nil {
    return result, err
 }
 return result, nil
}
/*
 *
 *  Retrieve the data used by main function
 *
 *
 */

func retrieve(c *gin.Context) {
  conditions := bson.M{}
  data, err :=GetData(conditions)
  if err != nil {
    fmt.Println("There is somthing wrong")
  }
  fmt.Println("--------------------")
  fmt.Println(data)
  fmt.Println("--------------------")
  arrange(data)
  return
}

func arrange(data Items) { 
  pagesJson, err := json.Marshal(data)
  if err != nil {
      log.Fatal("Cannot encode to JSON ", err)
  }
  fmt.Println(string(pagesJson))
}

我想使输出像

{"id": 1,"category": "fruits","name": "Apple","description": "Apple is my favorite fruit."} {"id": 2,"category": "colors","name": "Red",description": "Red color is always charming."} {"id": 3,"category": "flowers","name": "Lotus","description": "It is one of the most beautiful flowers in this world."}

有人可以帮我吗,我尝试了很多次,但是没有成功。


问题答案:

该代码将起作用

package main

import (
  "bytes"
  "encoding/json"
  "fmt"
  "log"
  "strings"
)

type Item struct {
  Id          int    `json:"id"`
  Category    string `json:"category"`
  Name        string `json:"name"`
  Description string `json:"description"`
}

type Items []Item

var myJson = []byte(`[{
 "id":1,
 "category":"fruits",
 "name":"Apple",
 "description":"Apple is my favorite fruit."
},
{
 "id":2,
 "category":"colors",
 "name":"Red",
 "description":"Red color is always charming."
},
{
 "id":3,
 "category":"flowers",
 "name":"Lotus",
 "description":"It is one of the most beautiful flowers in this world."
}]`)

func main() {
    var items Items

    err := json.Unmarshal(myJson, &items)
    if err != nil {
     log.Fatal(err)
    }

    s, err := getMyString(items)
   if err != nil {
        log.Fatal(err)
   }

   fmt.Println(s)
}

func getMyString(items Items) (string, error) {
  var buffer bytes.Buffer
  var err error
  var b []byte

  for _, item := range items {
    b, err = json.Marshal(item)
    if err != nil {
        return "", err
    }

    buffer.WriteString(string(b) + " ")
  }

  s := strings.TrimSpace(buffer.String())

  return s, nil
}


 类似资料:
  • 问题内容: 我想转换这个字符串 到2个JSON对象的数组。我该怎么办? 最好 问题答案: 使用jQuery: 是您的JSON对象。

  • 我使用以下代码将对象数组转换为字符串数组: 但我想知道是否有另一种方法可以做到这一点,比如: 但这将导致运行时错误:<code>线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常:[Ljava.langs.Object;无法强制转换为[Ljava.lang.String; 正确的做法是什么?

  • 问题内容: 我使用以下代码将Object数组转换为String数组: 但是我想知道是否还有另一种方法可以做到,例如: 但这会导致运行时错误: 正确的方法是什么? 问题答案: 另一种替代方法:

  • 我有这个json字符串 我想把它转换成JsonObject,因为它里面有一个json字符串,所以我必须取出JsonElement,然后使用它。问题是JsonElement“service”和“op”是字符串 我希望JsonObject像这样被转换 我尝试了新的JsonParser().parse(字符串)和新的Gson().fromJson(字符串,JsonObject.class),但没有解析。

  • 我有一个pandas数据框架,其中混合了数据类型(DType),我希望将其转换为numpy结构化数组(或记录数组,在本例中基本相同)。对于纯数字数据帧,使用方法很容易做到这一点。我还需要将pandas列的数据类型转换为字符串而不是对象,以便使用numpy方法,该方法将数字和字符串输出到二进制文件,但不会输出对象。 简而言之,我需要将带有的panda列转换为字符串或unicode数据类型的numpy

  • 问题内容: 我是后端代码的新手,我正在尝试创建一个将对我的JSON字符串进行响应的函数。我目前有一个例子 这基本上只是打印字符串“应该以JSON形式出现的随机数”。我要执行的操作是使用任何数字的JSON字符串进行响应。我需要放置其他内容类型吗?该函数应该将该值传递给客户端的另一个用户吗? 谢谢你的帮助! 问题答案: 在Express中使用res.json: 或者: