Timemo

とある高専生のメモ置き場

【改行文字】JSONで値の語尾に「\r」が付いてくるのだが...

どうも。へんじにゃ@hengin_blogです。

Reactでブログを作成している際に困ったことがあったので記事にしました

状況

markdownからメタデータを取得してJSONに書き込む際にsplit()メソッドを用いたのですが…

データを\nごとに区切ってposts.jsonに書き込み、それらをconsole.log()で表示すると以下のようになりました

~
import postlist from './posts.json';

console.log(postlist);

// 0: {id: '1\r', title: 'title\r', author: 'author\r', content: '\r\n~~~'}
// 1: ~~~

謎の\rが付いてくる😂😂

何故なのか

メタデータを取得する際\n(改行)ごとにそれぞれのデータを取ろうとしていたことが原因でした

別に改行ごとに取得するのは間違っていませんでした

しかし取り扱う改行の制御文字を間違えていたようです

ja.stackoverflow.com

こちらのサイトによるとWindowsでは\nではなく、\r\nが使われているとのこと

OSによって改行のための制御文字が違うみたいですね

  1. \r\nWindowsなどのmicrosoft系OS
  2. \nMacUnix系などのOS
  3. \r:古いMacOS
const lines = contents.split("\r\n");

よってこのようにすれば正しいデータになるはず🤔

import postlist from './posts.json';

console.log(postlist);

// 0: {id: '1', title: 'title', author: 'author', content: '\n~~~'}
// 1: ~~~

おっけい、これで正しいデータを表示することが出来た

まとめ

C言語で改行文字は\nと習ったことが敗因でした😅たいあり

Windowsをお使いの皆様は用心くださいませ

最後まで閲覧頂きありがとうございました😂😂

参考になったら読者登録よろしくお願いいたします!!
読者登録返しします!!