質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

7853閲覧

JSON.parseで日付文字列

masayoshi001

総合スコア18

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

1クリップ

投稿2017/11/25 04:02

編集2017/11/25 06:16

JAvascriptのアプリでJSON形式の文字列をJSON.parseで変換したいと考えています.

文字列中に日付を想定したデータがあり,2017112なら2017年11月2日を表します.
しかし,parse実行時にUnexpected Tokenのエラーが発生します.
日付を想定したデータを2017や201711にした場合はエラーは発生しません.
再び20171018(2017年10月18日)や2017112(2017年11月2日)などのデータにするとエラーが発生します.

上記の様な現象はなぜ発生し,対策方法はありますでしょうか?

何卒ご教授宜しくお願い致します.

以下は追記です.
問題が発生するコードは以下になります.

Javascript

1var d += "[{"; 2d += "\"product_no\" : \"test\","; 3d += "\"quantity\" : \"8\","; 4d += "\"derivery_date\" : \"20171115\""; 5d += "}]"; 6 7console.log(JSON.parse(d));

delivery_dateの部分を削除すると正常に動作致します.
正常に動作した時のconsoleの出力は以下の画像のようになります.
イメージ説明

何卒宜しくお願い致します.

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/11/25 05:58

問題が起きるコードを質問文に追記ください。
guest

回答3

0

JAvascriptのアプリでJSON形式の文字列をJSON.parseで変換したいと考えています.

そのの JSON 形式とは具体的にどのような形式なのですか?

JSON.stringify() メソッドを使うと、ISO 8601 Extended Format 即ち:

YYYY-MM-DDTHH:mm:ss.sssZ

という形式に変換されます。(すべてのブラウザで確認したわけではありませんが IE, Chrome, Firefox などメジャーなブラウザではそうなります)

例えば、以下のコードを実行すると、

var dateTime = new Date(2017, 1, 1, 12, 15, 45); var dateObject = { DateTime: dateTime }; var dateJson = JSON.stringify(dateObject);

dateJson は {"DateTime":"2017-02-01T03:15:45.000Z"} という JSON 文字列になります。そのことを言ってます?

そのような話であって、その JSON 文字列 dateJson から JavaScript の Date オブジェクトを取得したいということであれば、dateJson をパースして得られる JavaScript オブジェクトの DateTime プロパティで "2017-02-01T03:15:45.000Z" という文字列を取得できるので、Date コンストラクタを使ってその文字列から Date オブジェクトを生成してやるということになります。

自力で文字列に変換していて、YYYY-MM-DDTHH:mm:ss.sssZ 形式にならないということですと、Date コンストラクタは受け付けてくれないかも。

投稿2017/11/25 04:46

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

書かれているコードではエラーが出ると思います。

JavaScript

1// var d += "[{"; 2// ↓ 3 var d = "[{"; 4```**動くサンプル:**[https://jsfiddle.net/qd69Lnno/](https://jsfiddle.net/qd69Lnno/)

投稿2017/11/25 06:24

kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

皆様ご回答ありがとうございます.
kei344様のご回答を参考にして文字列を見直したところ,delivery_dateの文字列の最後に \r が存在するためにエラーが発生しているようでした.
データはcsvファイルから取得しているため,行の最後に \r が存在していました.
\r を除去するコードを加えると問題なく動作致しました.
たまたま日付形式の文字列の部分でエラーが発生していたため,発生原因を思い違いしておりました.
皆様ありがとうございました.

投稿2017/11/25 08:03

masayoshi001

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問