JSON数据格式转换

news2025/1/18 13:04:34

在前端 Vue 3 中,处理 JSON 数据通常涉及到从 API 获取 JSON解析 JSON 数据、或者将 JavaScript 对象转换为 JSON 字符串。这里是几种常见的 JSON 转换操作

一、从 JSON 字符串解析为 JavaScript 对象

如果你从 API 或其他地方收到一个 JSON 字符串,可以使用 JSON.parse() 来将它转换为 JavaScript 对象。

let jsonString = '{"name": "John", "age": 30, "city": "New York"}';
let jsonObject = JSON.parse(jsonString);

console.log(jsonObject.name);  // 输出: John

二、将 JavaScript 对象转换为 JSON 字符串

let user = {
  name: "Alice",
  age: 25,
  city: "London"
};

let jsonString = JSON.stringify(user);

console.log(jsonString);
// 输出: {"name":"Alice","age":25,"city":"London"}

三、 在 Vue 3 中处理 JSON 数据

a. 获取 JSON 数据并解析

通常,前端会通过 API 请求(如 fetchaxios)获取 JSON 数据。在 Vue 3 中,你可以使用 onMounted 钩子来发送请求并处理返回的 JSON 数据。

<template>
  <div>
    <h1>User Info</h1>
    <p v-if="user">Name: {{ user.name }}</p>
    <p v-if="user">Age: {{ user.age }}</p>
    <p v-if="user">City: {{ user.city }}</p>
  </div>
</template>

<script>
  import { ref, onMounted } from 'vue';

  export default {
    setup() {
      const user = ref(null);

      // 获取数据
      onMounted(async () => {
        try {
          const response = await fetch('https://api.example.com/user');
          const data = await response.json();  // 解析为 JSON 对象
          user.value = data;  // 将 JSON 对象存储到响应式变量
        } catch (error) {
          console.error("Error fetching data:", error);
        }
      });

      return {
        user
      };
    }
  };
</script>

在上面的代码中:

  • 使用 fetch 获取 JSON 数据。
  • 使用 response.json() 解析返回的 JSON 字符串。
  • 通过响应式变量 user 在模板中显示数据。
b. 发送 JavaScript 对象作为 JSON

当你需要将 JavaScript 对象作为 JSON 发送到后端时,可以使用 fetchaxios,并将数据通过 JSON.stringify() 转换成字符串。

<template>
  <div>
    <button @click="sendData">提交数据</button>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const sendData = async () => {
      const data = {
        name: 'Tom',
        age: 28,
        city: 'Berlin'
      };

      try {
        const response = await fetch('https://api.example.com/user', {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json'
          },
          body: JSON.stringify(data)  // 将对象转换为 JSON 字符串
        });
        
        const result = await response.json();
        console.log(result);  // 返回结果
      } catch (error) {
        console.error('Error:', error);
      }
    };

    return {
      sendData
    };
  }
};
</script>

在这段代码中:

  • 使用 JSON.stringify(data) 将 JavaScript 对象转换为 JSON 字符串,并通过 fetchbody 发送。
  • 设置 Content-Type: application/json 以告知服务器这是 JSON 格式的数据。
c. 使用 Axios 发送和接收 JSON

axios 是一个流行的 HTTP 客户端库,处理 JSON 数据也非常方便。默认情况下,axios 会自动将响应数据解析为 JSON 对象。

<template>
  <div>
    <button @click="sendData">提交数据</button>
  </div>
</template>

<script>
import { ref } from 'vue';
import axios from 'axios';

export default {
  setup() {
    const sendData = async () => {
      const data = {
        name: 'Tom',
        age: 28,
        city: 'Berlin'
      };

      try {
        const response = await axios.post('https://api.example.com/user', data);  // 直接传递对象,axios会自动转换为 JSON
        console.log(response.data);  // 返回的 JSON 数据
      } catch (error) {
        console.error('Error:', error);
      }
    };

    return {
      sendData
    };
  }
};
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2278480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多种 Docker 镜像拉取解决方案与实践

最近国内 Docker 镜像拉取不太通畅&#xff0c;尝试了几种镜像拉取的方式&#xff0c;写篇博客分享一下。 原以为只是 docker hub 被毙了&#xff0c;上机器一操作&#xff0c;官方的下载地址也被毙了&#xff0c;真是从源头解决问题。 不过还好目前还有其他源能用&#xff0…

2025边缘计算新年沙龙成功举办,共话边缘AI未来

1月11日下午&#xff0c;北京市海淀区中关村创业大街热闹非凡&#xff0c;以“云边腾跃&#xff0c;蛇启新航”为主题的 2025边缘计算新年沙龙 盛大举行。本次活动汇聚了边缘计算、人工智能以及云边协同领域的顶尖专家、学者和从业者&#xff0c;共同探讨技术前沿与实际应用场景…

使用redis-cli命令实现redis crud操作

项目场景&#xff1a; 线上环境上redis中的key影响数据展示&#xff0c;需要删除。但环境特殊没办法通过 redis客户端工具直连。只能使用redis-cli命令来实现。 操作步骤&#xff1a; 1、确定redis安装的服务器&#xff1b; 2、找到redis的安装目录下 ##找到redis安装目…

CentOS 下载软件时报Error: Failed to synchronize cache for repo ‘AppStream‘解决方法

下载软件时出现以下问题 直接把CentOS-AppStream.repo改个名字就行 cd /etc/yum.repos.d/ mv CentOS-AppStream.repo CentOS-AppStream.repo.bak就可以了 解决思路 把AI问遍&#xff0c;无人会&#xff0c;解决法 想要下载软件通通失败了&#xff0c;解决方法当然是问AI&am…

【深度学习】神经网络之Softmax

Softmax 函数是神经网络中常用的一种激活函数&#xff0c;尤其在分类问题中广泛应用。它将一个实数向量转换为概率分布&#xff0c;使得每个输出值都位于 [0, 1] 之间&#xff0c;并且所有输出值的和为 1。这样&#xff0c;Softmax 可以用来表示各类别的预测概率。 Softmax 函…

python管理工具:conda部署+使用

python管理工具&#xff1a;conda部署使用 一、安装部署 1、 下载 - 官网下载&#xff1a; https://repo.anaconda.com/archive/index.html - wget方式&#xff1a; wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh2、 安装 在conda文件的…

当PHP遇上区块链:一场奇妙的技术之旅

PHP 与区块链的邂逅 在技术的广袤宇宙中&#xff0c;区块链技术如同一颗耀眼的新星&#xff0c;以其去中心化、不可篡改、透明等特性&#xff0c;掀起了一场席卷全球的变革浪潮。众多开发者怀揣着对新技术的热忱与探索精神&#xff0c;纷纷投身于区块链开发的领域&#xff0c;试…

unity——Preject3——开始界面拼面板

目录 1.创建panel&#xff0c;去掉panel自带的image&#xff0c;自己加一个image&#xff0c;使用锚点分配好 2.锚点&#xff08;快捷键点击后 ALTShift&#xff09; 锚点是什么&#xff1f; 锚点的实际例子 例子1&#xff1a;固定在父容器的中心 例子2&#xff1a;对齐到…

PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别

torch.nn 和 torch.nn.functional 在 PyTorch 中都是用于构建神经网络的重要组件&#xff0c;但它们在设计理念、使用方式和功能上存在一些显著的区别。以下是关于这两个模块的详细区别&#xff1a; 1. 继承方式与结构 torch.nn torch.nn 中的模块大多数是通过继承 torch.nn…

传统以太网问题与VLAN技术详解

传统以太网的问题 广播域&#xff1a;在网络中能接收同一广播信息的所有设备&#xff08;计算机、交换机&#xff09;等的集合 说明&#xff1a;在一个广播域内&#xff0c;当一个设备发送广播帧时&#xff0c;该域内的所有设备都能接收到这个广播帧。工作原理&#xff1a;在以…

OpenAI Whisper:语音识别技术的革新者—深入架构与参数

当下语音识别技术正以前所未有的速度发展&#xff0c;极大地推动了人机交互的便利性和效率。OpenAI的Whisper系统无疑是这一领域的佼佼者&#xff0c;它凭借其卓越的性能、广泛的适用性和创新的技术架构&#xff0c;正在重新定义语音转文本技术的规则。今天我们一起了解一下Whi…

WPS计算机二级•高效操作技巧

听说这里是目录哦 斜线表头 展示项目名称&#x1f34b;‍&#x1f7e9;横排转竖排&#x1f350;批量删除表格空白行&#x1f348;方法一方法二建辅助列找空值 能量站&#x1f61a; 斜线表头 展示项目名称&#x1f34b;‍&#x1f7e9; 选中单元格&#xff0c;单击右键➡️“设…

RabbitMQ实现延迟消息发送——实战篇

在项目中&#xff0c;我们经常需要使用消息队列来实现延迟任务&#xff0c;本篇文章就向各位介绍使用RabbitMQ如何实现延迟消息发送&#xff0c;由于是实战篇&#xff0c;所以不会讲太多理论的知识&#xff0c;还不太理解的可以先看看MQ的延迟消息的一个实现原理再来看这篇文章…

《Keras 3 在 TPU 上的肺炎分类》

Keras 3 在 TPU 上的肺炎分类 作者&#xff1a;Amy MiHyun Jang创建日期&#xff1a;2020/07/28最后修改时间&#xff1a;2024/02/12描述&#xff1a;TPU 上的医学图像分类。 &#xff08;i&#xff09; 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 简介 设置 本教程将介…

1.17组会汇报

STRUC-BENCH: Are Large Language Models Good at Generating Complex Structured Tabular Data? STRUC-BENCH&#xff1a;大型语言模型擅长生成复杂的结构化表格数据吗&#xff1f;23年arXiv.org 1概括 这篇论文旨在评估大型语言模型&#xff08;LLMs&#xff09;在生成结构…

PyTorch使用教程(2)-torch包

1、简介 torch包是PyTorch框架最外层的包&#xff0c;主要是包含了张量的创建和基本操作、随机数生成器、序列化、局部梯度操作的上下文管理器等等&#xff0c;内容很多。我们基础学习的时候&#xff0c;只有关注张量的创建、序列化&#xff0c;随机数、张量的数学数学计算等常…

idea gradle compiler error: package xxx does not exist

idea 编译运行task时报项目内的包不存在&#xff0c;如果你试了网上的其它方法还不能解决&#xff0c;应该是你更新了新版idea&#xff0c;项目用的是旧版jdk&#xff0c;请在以下编译器设置中把项目JDK字节码版本设为8&#xff08;jdk1.8&#xff0c;我这里是17请自行选择&…

Nmap之企业漏洞扫描(Enterprise Vulnerability Scanning for Nmap)

简介 Namp是一个开源的网络连接端扫描软件&#xff0c;主要用于网络发现和安全审核。‌它可以帮助用户识别网络上的设备、分析它们的服务、检测操作系统类型&#xff0c;甚至发现潜在的安全漏洞。Nmap由Fyodor开发&#xff0c;最初是为了满足网络管理员的需求&#xff0c;但随…

RabbitMQ前置概念

文章目录 1.AMQP协议是什么&#xff1f;2.rabbitmq端口介绍3.消息队列的作用和使用场景4.rabbitmq工作原理5.整体架构核心概念6.使用7.消费者消息推送限制&#xff08;work模型&#xff09;8.fanout交换机9.Direct交换机10.Topic交换机&#xff08;推荐&#xff09;11.声明队列…

RabbitMQ---TTL与死信

&#xff08;一&#xff09;TTL 1.TTL概念 TTL又叫过期时间 RabbitMQ可以对队列和消息设置TTL&#xff0c;当消息到达过期时间还没有被消费时就会自动删除 注&#xff1a;这里我们说的对队列设置TTL,是对队列上的消息设置TTL并不是对队列本身&#xff0c;不是说队列过期时间…