【问题标题】:Send dynamic JSON from client to server从客户端发送动态 JSON 到服务器
【发布时间】:2021-03-13 19:54:00
【问题描述】:

在 Spring Boot 时,我有一个用 JavaScript 编写的客户端和一个用 Java 编写的服务器端。我的客户端有以下 JSON 数组。

[
  {
    "names": [
      {
        "default": "somelink"
      },
      {
        "nr": "somelink"
      },
      {
        "pr": "somelink"
      }
    ]
  },
  {
    "circle": [
      {
        "ID": [
          {
            "red": "someData"
          }
        ]
      },
      {
        "ID2": [
          {
            "blue": "somedata"
          }
        ]
      }
    ]
  },
  {
    "square": [
      {
        "ID3": []
      }
    ]
  },
  {
    "triangle": []
  }
]

现在以下属性将始终固定在 JSON 数组中 - names, circle, square, triangle。现在在我的应用程序中,您可以添加任何您喜欢的对象。所以在这个例子中,我们有两个圆圈,IDID2,它们都附加了一些数据 (red and blue)。我们有一个正方形ID3,没有数据也没有三角形。名称、圆形、正方形和三角形等固定属性中的每个属性都可以更改。

现在我想用 Java 将它发送到服务器端,但我很难知道如何做到这一点,因为我的 JSON 不是静态的。谁能帮我吗?提前致谢

【问题讨论】:

    标签: javascript java ajax spring-boot post


    【解决方案1】:

    您能否详细解释一下您努力查看 JSON 属性的变化是什么意思?

    乍一看,我可以看到您可以通过以不同的方式构建 JSON 对象来为自己节省大量工作:

    对于主要属性(如名称、圆形、正方形、三角形)的整个 JSON 对象,您可以使用以下内容来代替创建具有数组值的对象:

    {
    "names": [...],
    "circle": [...],
    "square": [...],
    "triangle": [...]
    }
    

    对于“名称”属性,请考虑这样做:(最后,这完全取决于您将在 (default, nr,公关)

    "names": {
        "default": "somelink",
        "nr": "somelink",
        "pr": "somelink"
    }
    

    圆键:

    代替:

    "circle": [
          {
            "ID": [
              {
                "red": "someData"
              }
            ]
          },
          {
            "ID2": [
              {
                "blue": "somedata"
              }
            ]
          }
        ]
    

    你可以这样做:

    "circle": {
      "ID": [
              {
                "red": "someData"
              }
            ],
      "ID2": [
              {
                "blue": "somedata"
              }
            ]
    }
    

    因此,作为一个整体对象,您可以将其构造如下:

    {
    
     "names": {
        "default": "somelink",
        "nr": "somelink",
        "pr": "somelink"
    },
     
    "circle": {
                "ID": [
                       {
                         "red": "someData"
                       }
                 ],
                "ID2": [
                        {
                         "blue": "somedata"
                       }
                ]
    },
    
    "square": {
                "ID3": []
    },
    
    "triangle": []
    
    }
    

    【讨论】:

    • 对象是动态的,在本例中,圆圈仅包含一个对象,但它们可以更改为任意数量。 ID 可能有 5 个对象,ID2 可能有 0。每次都不一样。同样,名称 ID 每次也可以不同。除了名称、圆、正方形和三角形之外,没有任何属性是固定的。结构保持不变。
    • 我编辑了答案,你能澄清一下你有什么问题吗?谢谢
    • 谢谢,我的问题是我不知道如何将此 JSON 传递到 Java 中的服务器端,因为 JSON 是动态的而不是静态的。
    • 所以你的问题是没有成功地使用 JavaScript 从前端发送对象数据?您是否使用 JSON.parse(object) 方法解析了对象?
    • 我很难理解我需要在服务器中做什么才能从客户端接收 json,我正在使用 spring boot。我需要创建对象吗?我只想在我的服务器端输出我的 json 字符串。
    猜你喜欢
    • 2013-11-16
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多