如何缩小 JSON?

问题描述 投票:0回答:3

我最近在面试中收到以下问题。

如何缩小 JSON 响应?

{
 name: "sample name",
 product: "sample product",
 address: "sample address"
}

我不知道如何缩小 JSON 及其背后的实现。 谁能解释一下吗?

提前致谢。

javascript jquery json minify
3个回答
22
投票

您可以解析 JSON,然后立即重新序列化解析后的对象:

var myJson = `{
    "name": "sample name",
    "product": "sample product",
    "address": "sample address" 
}`;

// 'Minifying' the JSON string is most easily achieved using the built-in
// functions in the JSON namespace:
var minified = JSON.stringify(JSON.parse(myJson));

document.body.innerHTML = 'Result:<br>' + minified;

您必须在服务器端执行缩小操作才能改善响应大小。我想大多数语言都支持与上面的代码片段等效的内容。例如,在 php 中可能会这样写(当然,如果您的服务器运行 php):

$myJson = '{
    "name": "sample name",
    "product": "sample product",
    "address": "sample address" 
}';

$minified = json_encode(json_decode($myJson));

3
投票

最明显的方法是去除空白。除此之外,您还可以将键映射为较短的内容,例如 a、b、c。

如果你想成为一个混蛋;你可以告诉他们有效的 json 的键周围会有引号。这似乎是一个js对象,而不是json。


1
投票

另一种方法可能是将其创建为带有隐式键的数组 - 基本上数组中的第一项映射到键“名称”,第二个映射到“产品”等 - 这要求消息的发送者和接收者准确地知道键的顺序,因此在您的示例中可以减少为

[“样品名称”,“样品产品”,“样品地址”]

你真的无法让它比这更短。如果您有带有子键的复杂对象,您可以使用嵌套多维数组,例如。

["样品名称","样品产品",["样品地址1","样品地址2"]]

对于多人游戏服务器网络等事物来说,这将是一个不错的选择,其中消息大小是减少延迟的主要因素,并且客户端和服务器都知道消息的结构。

它不是严格意义上的 Json,但有时你必须使用实用的解决方案来提高性能。

© www.soinside.com 2019 - 2024. All rights reserved.