ホームページ ウェブフロントエンド jsチュートリアル JSONの日付形式問題を解決する3つの方法problem_json

JSONの日付形式問題を解決する3つの方法problem_json

May 16, 2016 pm 05:01 PM
json 日付形式

開発中、サーバーからデータを json 形式で返す必要がある場合があります。バックグラウンド コードに DateTime 型のデータがある場合、システム独自のツール クラスを使用してシリアル化すると、日付を表す長い数値が取得されます。データは次のように表示されます:

コードをコピー コードは次のとおりです:

//サーバーの応答結果をプレーンに設定しますtext format
context.Response.ContentType = "text/plain";
//Student オブジェクト コレクション
List students = new List
{
new Student() {名前 = "トム",
誕生日 =Convert.ToDateTime("2014-01-31 12:12:12")},
新入生(){名前 ="ローズ",
誕生日 = Convert.ToDateTime ("2014-01-10 11:12:12")},
new Student(){名前 ="マーク",
誕生日 =Convert.ToDateTime("2014-01-09 10: 12:12 ")}
};

//javascriptserializer
JavaScriptSerializer jss=new JavaScriptSerializer();
//学生コレクション オブジェクトをシリアル化して json 文字を取得します
string studentsJson=jss.Serialize(students);
/ /文字列をクライアントに応答します
context.Response.Write(studentsJson);
context.Response.End();

実行結果は次のとおりです:

トムの対応する誕生日「2014-01-31」は 1391141532000 になり、これは実際には 1970 年 1 月 1 日から現在までのミリ秒数です。1391141532000/1000/60/60/24/365=44.11 年、44 1970。 =2014、この方法によれば、年、月、日、時、分、秒、ミリ秒を取得できます。この形式は実現可能な表現ではありますが、一般の人が理解できるフレンドリーな形式ではありません。この形式を変更するにはどうすればよいでしょうか。

解決策:

方法 1: サーバー側で Select メソッドまたは LINQ 式を使用して日付形式を変換し、クライアントに送信します:

コードをコピー コードは次のとおりです:

System を使用;
System.Collections.Generic を使用;
System.Web を使用;

System.Web.Script.Serialization を使用;

namespace JsonDate1
{
System.Linq を使用;

///

gt;
/// 学生类、测试用
///

公開クラス Student
{
/// < summary>
/// 姓
///
public String Name { get;セット; }

///


/// 生日
///

public DateTime Birthday { get;セット; }
}

///


/// 学生集合の json 文字符を返す
///

public class GetJson : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//服务器响应の結果は纯文正式式
context.Response.ContentType = "text/plain";
//学生对象集合
リスト< ;学生> students = new List
{
new Student(){Name ="Tom",Birthday =Convert.ToDateTime("2014-01-31 12:12:12")},
new Student(){Name ="Rose",Birthday =Convert.ToDateTime("2014-01-10 11:12:12")},
new Student(){Name ="Mark",Birthday =Convert.ToDateTime ("2014-01-09 10:12:12")}
};

//使用Selectメソッド重新投影对オブジェクト集合将誕生日属性转换成一新的属性
// 注意プロパティ变化後要重新命名、并立即执行
varstudentSet =
学生。選択
(
p => new { p.Name, Birthday = p.Birthday.ToString("yyyy-mm-dd") }
).ToList();

//javascript配列化器
JavaScriptSerializer jss = new JavaScriptSerializer();
//配列化学生集合对得json文字符
string studentsJson = jss.S erialize(studentSet);
/ /将字符串响应到客户端
context.Response.Write(studentsJson);
context.Response.End();
}

public bool IsReusable
{
get
{
return false;
}
}
}
}


Select メソッドはオブジェクト コレクションを再投影し、Birthday 属性を新しい属性に変換します。属性の変更後は属性の名前を変更する必要があることに注意してください。ここでは、select メソッドまたは LINQ を使用できます。このメソッドは、クエリ式を使用するか、他のものを選択することもできます。このメソッドは、単にパフォーマンスを最適化するという目的を達成するために、コレクション内のクライアントによって使用されない属性を削除できます。

実行結果:

この時点で日付形式はわかりやすい形式になっていますが、JavaScript ではこれは単なる文字列です。

方法 2:

"Birthday":"/Date(1391141532000)/" の文字列を JavaScript の日付オブジェクトに変換します。誕生日キーに対応する値内の数値以外の文字を数値に置き換えることで削除できます。 1391141532000 を指定し、1391141532000 ミリ秒をパラメータとして使用して Date オブジェクトをインスタンス化し、JavaScript で日付オブジェクトを取得します。コードは次のとおりです。

コードをコピー コードは次のとおりです:



json 日付形式処理




json 日付形式処理







実行結果:




で通常の /D/igm を使用すると、D は非数字を意味し、igm は複数の大文字と小文字を無視 (無視) することを意味します。 -line replace (multi-line); 場合によっては 86 の状況が発生し、正規表現を変更するだけで目的を達成できます。さらに、日付形式を処理する必要があるという問題がプロジェクト内で繰り返し発生する場合は、次のコードを使用して JavaScript メソッドを拡張できます:

コードをコピー

コードは次のとおりです:


$(function () {
("
  • ").html(obj.Name).appendTo("#ul)学生");

    place(/ D/igm, ""); $("
  • ").html(birthday.toLocaleString()).appendTo("#ulStudents");

    $("

  • ").html(obj) .Birthday.toDate()).appendTo("#ulStudents");
    ;
    //String オブジェクトの toDate メソッドを拡張します。これは要件に応じて改善できます
    String.prototype.toDate = function () {
    var dateMilliseconds;

    if (isNaN(this)) {

    this;
    ;
    上記の拡張メソッド toDate は合理的または十分強力ではない可能性があるため、必要に応じて変更できます。

    方法 3:

    いくつかのサードパーティ JSON ツール クラスを選択できます。その多くは、一般的な JSON シリアル化および逆シリアル化ツール ライブラリですでに日付形式の問題に対処しています。

    1.fastJSON.
    2.JSON_checker.
    3.Jayrock.
    4.Json.NET - LINQ to JSON.
    5.LitJSON.
    6.NET 用の JSON .
    7.JsonFx.
    8.JSONSharp.
    9.JsonExSerializer.
    10.fluent-json
    11.Manatee Json

  • ここでは、json をシリアル化および逆シリアル化するためのツール クラスの例として litjson を示します。コードは次のとおりです。

    コードをコピー


    コードは次のとおりです:


    System を使用;
    System.Collections.Generic を使用;
    System.Web を使用;

    LitJson を使用する;

    名前空間 JsonDate2
    {
    System.Linq を使用;

    ///


    /// Student クラス、テストに使用されます
    ///

    public class Student
    {
    /// < ; 概要>
    /// 名前

    /// <概要>

    ///


    /// Student コレクションの json 文字を返します
    ///

    public class GetJson: IHttpHandler
    {

    public void ProcessRequest (httpcontext context)

    {
    // サーバー応答の結果を純粋なテキスト形式として設定します
    context.Response.contenttype = "text/plain" ;Student> ;生徒>
    {
    新しい生徒(){名前 ="トム",誕生日 =Convert.ToDateTime("2014-01-31 12:12:12")},
    新しい生徒(){ Name ="ローズ",Birthday =Convert.ToDateTime("2014-01-10 11:12:12")},
    new Student(){Name ="Mark", Birthday = Convert.ToDateTime("2014- 01-09 10:12:12")}
    };

    //配列化学生集合对象得到json文字符
    string studentsJson = JsonMapper.ToJson(students);
    // 将字符响应到客户端
    context .Response.Write(studentsJson);
    context.Response.End();
    }

    public bool IsReusable

    {
    get
    {
    return false;
    }
    }

    }

    }



    実行結果は次のとおりです:




    現時点での日付形式は基本的に正しいです。JavaScript で日付を直接インスタンス化するだけです。

    var date = new Date("01/31/2014 12:12:12");

    alert(date.toLocaleString()); クライアントコードは次のとおりです:


    コードをコピー

    コードは次のとおりです:

    $ (fuins () {
    $ .getjson ("getjson2.ASHX", function (students) {
    $ .Each (Students, Function (INDEX, OBJ) {
    $ > ("
  • ").html(obj.Name).appendTo("#ulStudents");
    var Birthday = new Date(obj.Birthday);

    $("

  • ").html(birthday.toLocaleString()).appendTo("#ulStudents");
    } );
    });
    });

    var date = new Date("01/31/2014 12:12:12");

    alert(date.toLocaleString());

  • ここでは、JSON でシリアル化した後の日付形式の問題を解決する 3 つの方法を紹介します。もっと優れた完全な方法があるはずです。ぜひ教えてください。多くの学生からの質問があったため、この記事を書きました。批判や修正は歓迎です。

    サンプルコードのダウンロード

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    golang WebSocketとJSONの組み合わせ:データ送信と解析を実現 golang WebSocketとJSONの組み合わせ:データ送信と解析を実現 Dec 17, 2023 pm 03:06 PM

    golangWebSocket と JSON の組み合わせ: データ送信と解析の実現 現代の Web 開発では、リアルタイムのデータ送信がますます重要になっています。 WebSocket は双方向通信を実現するために使用されるプロトコルで、従来の HTTP リクエスト/レスポンス モデルとは異なり、WebSocket を使用すると、サーバーがクライアントにデータをアクティブにプッシュできます。 JSON (JavaScriptObjectNotation) は、簡潔で読みやすいデータ交換用の軽量形式です。

    PHP 配列を JSON に変換するためのパフォーマンス最適化のヒント PHP 配列を JSON に変換するためのパフォーマンス最適化のヒント May 04, 2024 pm 06:15 PM

    PHP 配列を JSON に変換するためのパフォーマンスの最適化方法には、JSON 拡張機能と json_encode() 関数の使用、文字エスケープを回避するためのバッファーの使用、およびサードパーティのエンコード結果の使用の検討が含まれます。 JSONエンコーディングライブラリ。

    MySQL5.7とMySQL8.0の違いは何ですか? MySQL5.7とMySQL8.0の違いは何ですか? Feb 19, 2024 am 11:21 AM

    MySQL5.7 と MySQL8.0 は 2 つの異なる MySQL データベース バージョンであり、それらの間には主な違いがいくつかあります: パフォーマンスの向上: MySQL8.0 では、MySQL5.7 と比較してパフォーマンスがいくつか向上しています。これには、より優れたクエリ オプティマイザー、より効率的なクエリ実行プランの生成、より優れたインデックス作成アルゴリズムと並列クエリなどが含まれます。これらの改善により、クエリのパフォーマンスとシステム全体のパフォーマンスが向上します。 JSON サポート: MySQL 8.0 では、JSON データのストレージ、クエリ、インデックス作成など、JSON データ型のネイティブ サポートが導入されています。これにより、MySQL での JSON データの処理と操作がより便利かつ効率的になります。トランザクション機能: MySQL8.0 では、アトミックなどのいくつかの新しいトランザクション機能が導入されています。

    golang の json.MarshalIndent 関数を使用して、構造をフォーマットされた JSON 文字列に変換します。 golang の json.MarshalIndent 関数を使用して、構造をフォーマットされた JSON 文字列に変換します。 Nov 18, 2023 pm 01:59 PM

    golang で json.MarshalIndent 関数を使用して、構造をフォーマットされた JSON 文字列に変換します。Golang でプログラムを作成するとき、多くの場合、構造を JSON 文字列に変換する必要があります。このプロセスでは、 json.MarshalIndent 関数が役に立ちます。フォーマットされた出力。以下では、この関数の使用方法と具体的なコード例を詳しく説明します。まず、データを含む構造体を作成しましょう。以下は目安です

    C# 開発で XML および JSON データ形式を処理する方法 C# 開発で XML および JSON データ形式を処理する方法 Oct 09, 2023 pm 06:15 PM

    C# 開発で XML および JSON データ形式を処理する方法には、特定のコード サンプルが必要です。現代のソフトウェア開発では、XML と JSON の 2 つのデータ形式が広く使用されています。 XML (Extensible Markup Language) はデータの保存と送信に使用されるマークアップ言語であり、JSON (JavaScript Object Notation) は軽量のデータ交換形式です。 C# 開発では、XML と JSON データの処理と操作が必要になることがよくありますが、この記事では、C# を使用してこれら 2 つのデータ形式を処理し、添付する方法に焦点を当てます。

    PHP の json_encode() 関数を使用して、配列またはオブジェクトを JSON 文字列に変換し、出力をフォーマットします。 PHP の json_encode() 関数を使用して、配列またはオブジェクトを JSON 文字列に変換し、出力をフォーマットします。 Nov 03, 2023 pm 03:44 PM

    PHP の json_encode() 関数を使用して配列またはオブジェクトを JSON 文字列に変換し、出力をフォーマットすると、異なるプラットフォームや言語間でのデータの転送や交換が容易になります。この記事では、json_encode() 関数の基本的な使い方と、JSON 文字列をフォーマットして出力する方法を紹介します。 1. json_encode() 関数の基本的な使い方 json_encode() 関数の基本的な構文は次のとおりです。

    Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化をどのように制御しますか? Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化をどのように制御しますか? May 06, 2024 pm 10:09 PM

    Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化を制御します。 シリアル化: @JsonIgnore: プロパティを無視します @JsonProperty: 名前を指定します @JsonGetter: get メソッドを使用します @JsonSetter: set メソッドを使用します Deserialization: @JsonIgnoreProperties: プロパティ @ JsonProperty を無視します:名前を指定 @JsonCreator: コンストラクターを使用 @JsonDeserialize: カスタム ロジック

    Pandas の使用法チュートリアル: JSON ファイルを読み取るためのクイック スタート Pandas の使用法チュートリアル: JSON ファイルを読み取るためのクイック スタート Jan 13, 2024 am 10:15 AM

    クイック スタート: JSON ファイルを読み取る Pandas の方法、特定のコード サンプルが必要です はじめに: データ分析とデータ サイエンスの分野では、Pandas は重要な Python ライブラリの 1 つです。豊富な機能と柔軟なデータ構造を備え、さまざまなデータを簡単に処理・分析できます。実際のアプリケーションでは、JSON ファイルを読み取る必要がある状況によく遭遇します。この記事では、Pandas を使用して JSON ファイルを読み取る方法を紹介し、具体的なコード例を添付します。 1.パンダのインストール

    See all articles