文章

【未完结】大型 json 对象数据の分析、处理

对 “什么算是大型数据” 没有概念的话,执行下以下代码、请求下单个从者的数据——就会有概念了反正数据量绝对多过你自己的玩具项目

1
2
3
4
5
6
7
8
9
10
11
12
async function myFetch(url) {
  console.log("fetching...");
  let res = await fetch(url);
  let json_data = await res.json();

  console.log("打印结果中...");
  console.log(Object.keys(json_data));
}

const myUrl = "https://api.atlasacademy.io/nice/NA/servant/2";
myFetch(myUrl);
// 最后的数据对象 prettier 之后有 1000 多行

这么大的数据,是个人都知道:全部照搬到网页上,网页得有 “多卡” !所以,接收后如何预处理大型数据 的思路就很重要了。

(这里先记录下我的第一次思路:)

  1. 首先,列出你想要的属性!(这步不清晰的话,就像画画没有草稿,接下来的步骤无从展开)

    我想要展示的 “从者最基本的属性” ,包括:

    • 立绘图片 - extraAssets.charaGraph
    • 从者名 - name
    • 宝具名 - noblePhantasms.name/.originalName
    • class(职介)- className
    • 技能 - skills
  2. 然后,我们已经持有 json_data 的结果,就 ctrl + F 查询属性,对属性的名称、大概数据格式留个印象(结果见上)。

    某些属性需要 单独打印出来查看 ,才能看清更深层的内容。

    例如,包含 从者立绘等图片信息 的属性,在一级打印结果中通常只显示一个对象或键名,我们必须进一步展开,才能找到图片的 url 等具体字段。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
     // 这些 "Object" 等等的就要详细打印
     extraAssets: {
         charaGraph: { ascension: [Object], costume: [Object] },
         faces: { ascension: [Object], costume: [Object] },
         charaGraphEx: {},
         charaGraphName: {},
         narrowFigure: { ascension: [Object], costume: [Object] },
         charaFigure: { ascension: [Object], story: [Object], costume: [Object] },
         charaFigureForm: {},
         charaFigureMulti: {},
         charaFigureMultiCombine: {},
         charaFigureMultiLimitUp: {},
         commands: { ascension: [Object], costume: [Object] },
         status: { ascension: [Object], costume: [Object] },
         equipFace: {},
         image: { story: [Object] },
         spriteModel: { ascension: [Object], costume: [Object] },
         charaGraphChange: {},
         narrowFigureChange: {},
         facesChange: {}
       },
    

    我们异步打印 extraAssets.charaGraph 属性,就得到了:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
     {
       ascension: {
         '1': 'https://static.atlasacademy.io/NA/CharaGraph/100100/100100a@1.png',
         '2': 'https://static.atlasacademy.io/NA/CharaGraph/100100/100100a@2.png',
         '3': 'https://static.atlasacademy.io/NA/CharaGraph/100100/100100b@1.png',
         '4': 'https://static.atlasacademy.io/NA/CharaGraph/100100/100100b@2.png'
       },
       costume: {
         '100130': 'https://static.atlasacademy.io/NA/CharaGraph/100130/100130a.png'
       }
     }
    
    1. 你已经懂得了如何获得单个属性的值,那可不可以一口气返回所有想要的属性值呢?
本文由作者按照 CC BY 4.0 进行授权