json-14

JSON

JSON 是一種輕量級(jí)易與解析的數(shù)據(jù)格式胜嗓,它按照 js 的對(duì)象和數(shù)組的字面
量格式來書寫榜轿。 現(xiàn)在 JSON 的光環(huán)已經(jīng)逐漸超越了 XML亥贸,各大網(wǎng)站提供的數(shù)據(jù)
接口一般都是 JSON器虾。

下面的代碼是用 JSON 編寫的用戶列表:


[
{
"name": "john",
"age": 15
},
{
"name": "wall",
"age": 22
},
{
"name": "ben",
"age": 8
}
]


jquery 1.4 以后對(duì) json
格式變嚴(yán)格了,也就是說必須要這種格式的{"鍵":"值
","鍵":"值"};像原來的{鍵:值,鍵:值}和{'鍵':'值','鍵':'值'}這種都是錯(cuò)誤的蹦锋,不合標(biāo)準(zhǔn)兆沙,所以
jquery 返回 error
如"{\"success\":true,\"msg\":\"success\"}",如果說是boolean
類型莉掂,則不用加 引號(hào)葛圃,其它的鍵/值都需要加引號(hào)。

1. JSON 是什么憎妙?
JSON: JavaScript 對(duì)象表示法(JavaScript Object Notation) ,
一種輕量級(jí)的數(shù)\據(jù)交換格式, 易于人閱讀和編寫, 也易于機(jī)器解析和生成库正。用來描述數(shù)據(jù)結(jié)構(gòu),
它是基于純文本的數(shù)據(jù)格式厘唾,是一種輕量級(jí)的數(shù)據(jù)交換格式褥符。廣泛應(yīng)用于服務(wù)端與客戶端的數(shù)據(jù)交互。
JSON 是存儲(chǔ)和交換文本信息的語法阅嘶,類似 XML。
JSON 采用完全獨(dú)立于語言的文本格式载迄,也使用了類似于 C 語言家族的習(xí)
慣(包括 C, C++, C#, Java, JavaScript, Perl, Python...)這些特性使 JSON
成為理想
的數(shù)據(jù)交換語言讯柔。

JSON 是一個(gè)新的人類可讀( human readable)的數(shù)據(jù)格式,在過去幾年中已變
得非常 受歡迎护昧,尤其是在 web 開發(fā)中魂迄。

1) 基本類型


{
"name": "張三",
"age": 18,
"sex": true
}


2) 數(shù)組類型

[
{
"name": "張三",
"age": 18,
"sex": true
},
{
"name": "李四",
"age": 19,
"sex": false
}
]

3) 對(duì)象嵌套

{
"name": "teacher",
"computer": {
"CPU": "intel7",
"disk": "512G"
},
"students": [
{
"name": "張三",
"age": 18,
"sex": true
},
{
"name": "李四",
"age": 19,
"sex": false
}
]
}

2. JSON 格式
1) 兩種構(gòu)建結(jié)構(gòu)
a)、對(duì)象:"名稱/"對(duì)的集合**(A collection of name/value
pairs)\

不同的語言中惋耙,它被理解為對(duì)象(object)捣炬,記錄(record),結(jié)構(gòu)(struct)绽榛,
字典 (dictionary)湿酸,哈希表(hash table),有鍵列表(keyed
list)灭美,或者關(guān)聯(lián)數(shù)組(associative array)推溃。
b)、數(shù)組:值的有序列表**(An ordered list of values)
**在大多數(shù)語言中届腐,它被理解為數(shù)組(array)铁坎、矢量(vector),
列表(list)或者序列
(sequence)。
經(jīng)過對(duì)象犁苏、數(shù)組 2 種結(jié)構(gòu)就可以組合成復(fù)雜的數(shù)據(jù)結(jié)構(gòu)了硬萍。

2) 具體形式
?Json 以 key-value 的形式存儲(chǔ)數(shù)據(jù)
?Key 的取值 為 String 類型;
?Value 的取值 為 String,boolean,Number,數(shù)組,Object,null;
?Json 串以{開始,以}結(jié)尾;
?Json 串中數(shù)組是以[開始,以]結(jié)尾;
?Json 串中 Object 是以{開始,以}結(jié)尾;
具體如下: [http://www.json.org/]{.underline}

a)、對(duì)象是一個(gè)無序的"名稱/值"對(duì)集合围详。一個(gè)對(duì)象以"{"開始朴乖, "}"結(jié)束。每
個(gè)名稱后跟一個(gè)":"; "名稱/值 "對(duì)之間使用","分隔寒砖。

image.png

b)赐劣、數(shù)組是值的有序集合。一個(gè)數(shù)組以"["開始哩都,
"]"結(jié)束魁兼。各值間使用","分隔。


image.png

c)漠嵌、值(value)可以是雙引號(hào)括起來的字符串(string)咐汞、數(shù)值(number)、
true儒鹿、
false化撕、 null、 對(duì)象(object)或者數(shù)組(array)约炎。這些結(jié)構(gòu)可以嵌套植阴。

image.png

d)、字符串(string)是由 0 到多個(gè) Unicode 字符組成的序列圾浅,封裝在雙引
號(hào)中, 可
以使用反斜杠'\'進(jìn)行轉(zhuǎn)義掠手。一個(gè)字符可以表示為一個(gè)單一字符的字符串。

image.png

e)狸捕、數(shù)字(number)類似 C 或者 Java 里面的數(shù)喷鸽,沒有用到的 8 進(jìn)制和 16 進(jìn)
制數(shù)除外

image.png

二、 解析方式
1. 使用 gson 處理
Gson是一個(gè) Google提供的一個(gè) Java庫,可用于將 Java對(duì)象轉(zhuǎn)換為 JSON表示灸拍。
它也可以被用來將 JSON 字符串轉(zhuǎn)換成一個(gè)等效的 Java 對(duì)象做祝。
提供易于使用的機(jī)制如 toString()和構(gòu)造函數(shù)(工廠方法)將 Java 轉(zhuǎn)換為 JSON,
反之亦然。 允許自定義表示對(duì)象鸡岗,支持任意復(fù)雜的對(duì)象,生成緊湊和可讀性的JSON
輸出.

***1) 轉(zhuǎn)為 Json 字符串
I)混槐、獲得需要的對(duì)象:


Student stu = new Student();
stu.setName("張三");
stu.setAge(18);


II)、格式化為字符串


Gson gson = new Gson();
//將 對(duì)象 轉(zhuǎn)化成 json 字符串
String json = gson.toJson(stu)


2) 解析成 java 對(duì)象
I)轩性、 Gson 的 節(jié)點(diǎn)對(duì)象:**
JsonElement : 所有的節(jié)點(diǎn) 都是 JsonElement 對(duì)象.
JsonPrimitive : 基本的 數(shù)據(jù)類型的 節(jié)點(diǎn) 對(duì)象纵隔, JsonElement 的子類.
JsonNull : 代表 空節(jié)點(diǎn) 對(duì)象,即 有 key炮姨, value 為空捌刮, JsonElement
的子類.
JsonObject : 對(duì)象 數(shù)據(jù)類型的 節(jié)點(diǎn) 對(duì)象, JsonElement 的 子類.
JsonArray : 數(shù)組 數(shù)據(jù)類型的 節(jié)點(diǎn) 對(duì)象, JsonElement 的 子類.
II)、 JsonElement 的取值:

**JsonPrimitive : value 的 取值對(duì)應(yīng) java 的
int,double,float,long,short,boolean,char,byte,String,BigDecimal,BigI
nteger,Number
JsonObject : value 的取值對(duì)應(yīng) java 的 Object 對(duì)象.
JsonArray : value 的取值對(duì)應(yīng) java 的 List 及其子類對(duì)象.

  • -Json 解析成 java 對(duì)象

  • -Json 解析 成 List

  • Json 解析 成 map

  • -Json 節(jié)點(diǎn)解析

  • Json 節(jié)點(diǎn)解析

{
"flag": true,
"data": {
"name": "張三",
"age": 18,
"sex":
}
}


解析步驟 :
①獲得解析器

--
JsonParser parser = new JsonParser();


②獲得根節(jié)點(diǎn)元素

--
JsonElement element = parser.parse(json);


③根據(jù)文檔判斷根節(jié)點(diǎn)屬于什么類型的 Gson 節(jié)點(diǎn)對(duì)象


// 假如文檔 顯示 根節(jié)點(diǎn) 為對(duì)象類型
// 獲得 根節(jié)點(diǎn) 的實(shí)際 節(jié)點(diǎn)類型
JsonObject root = element.getAsJsonObject();


④取得節(jié)點(diǎn)下的某個(gè)節(jié)點(diǎn)的 value


// 獲得 flag 節(jié)點(diǎn)的值, flag 節(jié)點(diǎn)為基本數(shù)據(jù)節(jié)點(diǎn)
JsonPrimitive flagJson = root.getAsJsonPrimitive("flag");
// 基本節(jié)點(diǎn)取值
boolean flag = flagJson.getAsBoolean();
// 獲得 data 節(jié)點(diǎn)的值舒岸, data 節(jié)點(diǎn)為 Object 數(shù)據(jù)節(jié)點(diǎn)
JsonObject dataJson = root.getAsJsonObject("data");
// 將節(jié)點(diǎn)上的數(shù)據(jù)轉(zhuǎn)換為對(duì)象


package com.shsxt.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;
import com.google.gson.reflect.TypeToken;
import com.shsxt.model.User;


/**
 * 單元測(cè)試類
 *  選擇要執(zhí)行的方法绅作,右鍵,選擇Run As 或 Debug As蛾派,選擇JUnit Test執(zhí)行方法(如果沒有選擇方法俄认,則全部執(zhí)行)
 *      成功:綠色个少;報(bào)錯(cuò):暗紅色
 * 注:
 *  1、單元測(cè)試的方法都必須加注解@Test
 *  2眯杏、不能有父類
 *  3夜焦、不能是靜態(tài)方法
 *  4、不能有參數(shù)
 *  5岂贩、返回值是void
 * @author Lisa Li
 *
 */
public class GsonTest {

    @Test
    public void test() {
        // fail("Not yet implemented");
        //System.out.println("Hello JUnit!");
    }
    
    
    /**
     * 將java對(duì)象轉(zhuǎn)換成json字符串
     */
    @Test
    public void testJavaToJson() {
        
        // 得到Gson對(duì)象
        Gson gson = new Gson();
        
        // JavaBean對(duì)象
        User user = new User(1, "zhangsan", "123456", 18, "上海");
        // 將JavaBean對(duì)象轉(zhuǎn)換為json字符串
        String json = gson.toJson(user);
        
        System.out.println(json);
        
        // List集合
        List<String> list = new ArrayList<String>();
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");
        String json2 = gson.toJson(list);
        System.out.println(json2);
        
        // JavaBean List
        List<User> userList = new ArrayList<>();
        User user2 = new User(2, "lisi", "123124", 19, "北京");
        User user3 = new User(3, "wangwu", "111111", 20, "杭州");
        userList.add(user);
        userList.add(user2);
        userList.add(user3);
        String json3 = gson.toJson(userList);
        System.out.println(json3);
        
        
        // Map
        Map<String, Object> map = new HashMap<>();
        map.put("name","zhansgan");
        map.put("sex",true);
        map.put("user", user);
        map.put("userList", userList);
        String json4 = gson.toJson(map);
        System.out.println(json4);
        
        
        Map<String, Object> map2 = new HashMap<>();
        map2.put("user1", user);
        map2.put("user2", user2);
        map2.put("user3", user3);
        String json5 = gson.toJson(map2);
        System.out.println(json5);
        
    }
    
    /**
     * 將json字符串轉(zhuǎn)換成java對(duì)象
     */
    @Test
    public void testJsonTtoJava() {
        // 轉(zhuǎn)JavaBean
        String json1 = "{\"userId\":1,\"userName\":\"zhangsan\",\"userPwd\":\"123456\",\"userAge\":18,\"address\":\"上海\"}";
        User user = new Gson().fromJson(json1, User.class);
        System.out.println(user.getUserName());
        
        
        // 轉(zhuǎn)List
        String json2 = "[\"zhangsan\",\"lisi\",\"wangwu\"]";
        List<String> list = new Gson().fromJson(json2, new TypeToken<List<String>>(){}.getType());
        System.out.println(list.get(0));
        
        
        String json3 = "[{\"userId\":1,\"userName\":\"zhangsan\",\"userPwd\":\"123456\",\"userAge\":18,\"address\":\"上海\"},{\"userId\":2,\"userName\":\"lisi\",\"userPwd\":\"123124\",\"userAge\":19,\"address\":\"北京\"},{\"userId\":3,\"userName\":\"wangwu\",\"userPwd\":\"111111\",\"userAge\":20,\"address\":\"杭州\"}]";
        List<User> userList = new Gson().fromJson(json3, new TypeToken<List<User>>(){}.getType());
        System.out.println(userList.get(0));
        
        
        String json4 = "{\"user1\":{\"userId\":1,\"userName\":\"zhangsan\",\"userPwd\":\"123456\",\"userAge\":18,\"address\":\"上海\"},\"user2\":{\"userId\":2,\"userName\":\"lisi\",\"userPwd\":\"123124\",\"userAge\":19,\"address\":\"北京\"},\"user3\":{\"userId\":3,\"userName\":\"wangwu\",\"userPwd\":\"111111\",\"userAge\":20,\"address\":\"杭州\"}}";
        Map<String,User> map = new Gson().fromJson(json4, new TypeToken<Map<String,User>>(){}.getType());
        System.out.println(map.get("user2"));
    
    }
    
    
    /**
     * 節(jié)點(diǎn)解析
     * {
     *  "userList":[
     *      {"userId":1,"userName":"zhangsan","userPwd":"123456","userAge":18,"address":"上海"},
     *      {"userId":2,"userName":"lisi","userPwd":"123124","userAge":19,"address":"北京"},
     *      {"userId":3,"userName":"wangwu","userPwd":"111111","userAge":20,"address":"杭州"}
     *   ],
     *  "sex":true,
     *  "name":"zhansgan",
     *  "user":{
     *      "userId":1,
     *      "userName":"zhangsan",
     *      "userPwd":"123456",
     *      "userAge":18,
     *      "address":"上海"
     *  }
     * }
     * 
     */
    @Test
    public void jsonParser() {
        String json = "{\"userList\":[{\"userId\":1,\"userName\":\"zhangsan\",\"userPwd\":\"123456\",\"userAge\":18,\"address\":\"上海\"},{\"userId\":2,\"userName\":\"lisi\",\"userPwd\":\"123124\",\"userAge\":19,\"address\":\"北京\"},{\"userId\":3,\"userName\":\"wangwu\",\"userPwd\":\"111111\",\"userAge\":20,\"address\":\"杭州\"}],\"sex\":true,\"name\":\"zhansgan\",\"user\":{\"userId\":1,\"userName\":\"zhangsan\",\"userPwd\":\"123456\",\"userAge\":18,\"address\":\"上海\"}}";
        
        // 得到解析器
        JsonParser parser = new JsonParser();
        // 得到文檔節(jié)點(diǎn)
        JsonElement jsonElement = parser.parse(json);
        // 根據(jù)文檔的字符串類型判斷節(jié)點(diǎn)類型   {}對(duì)象是JsonObject類型
        JsonObject root = jsonElement.getAsJsonObject();
        
        // 開始解析文檔中的具體節(jié)點(diǎn)
        // sex  布爾類型  基本數(shù)據(jù)類型
        JsonPrimitive jsonPrimitive = root.getAsJsonPrimitive("sex");
        boolean sex = jsonPrimitive.getAsBoolean();
        System.out.println(sex);
        
        // name 字符串 基本數(shù)據(jù)類型
        JsonPrimitive jsonPrimitive2 = root.getAsJsonPrimitive("name");
        String name = jsonPrimitive2.getAsString();
        System.out.println(name);
        
        // user  user對(duì)象    jsonObject
        JsonObject jsonObject = root.getAsJsonObject("user");
        User user = new Gson().fromJson(jsonObject, User.class);
        System.out.println(user);
        
        // userList   List   JsonArray
        JsonArray jsonArray = root.getAsJsonArray("userList");
        List<User> userList = new Gson().fromJson(jsonArray, new TypeToken<List<User>>(){}.getType());
        System.out.println(userList);
        
    
    }


}


用戶類

package com.shsxt.model;

/**
 * 用戶類
 * @author Lisa Li
 *
 */
public class User {

    private Integer userId; // 主鍵茫经,用戶ID
    private String userName; // 用戶名
    private String userPwd; // 用戶密碼
    private Integer userAge; // 用戶年齡
    private String address; // 地址
    
    
    public User() {
        super();
    }
    public User(Integer userId, String userName, String userPwd, Integer userAge, String address) {
        super();
        this.userId = userId;
        this.userName = userName;
        this.userPwd = userPwd;
        this.userAge = userAge;
        this.address = address;
    }
    public Integer getUserId() {
        return userId;
    }
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserPwd() {
        return userPwd;
    }
    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }
    public Integer getUserAge() {
        return userAge;
    }
    public void setUserAge(Integer userAge) {
        this.userAge = userAge;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "User [userId=" + userId + ", userName=" + userName + ", userPwd=" + userPwd + ", userAge=" + userAge
                + ", address=" + address + "]";
    }
    
}


2. 使用 fastjson 處理

阿里巴巴 fastJson 是一個(gè) Json 處理工具包,包括"序列化"和"反序列化"兩
部分萎津,它 具備如下特征:速度最快卸伞,測(cè)試表明, fastjson 具有極快的性能锉屈,超
越其他的 Java Json parser荤傲。包括自稱最快的 JackJson;功能強(qiáng)大颈渊,完全支持
Java
Bean遂黍、集合、 Map俊嗽、 日期雾家、 Enum,支持范型乌询,支持自拾裉豌研;無依賴妹田。
下載路徑:https://github.com/alibaba/fastjson/releases/tag/1.2.13
Fastjson 是一個(gè) Java 語言編寫的高性能功能完善的 JSON 庫。 fastjson 采
用獨(dú)創(chuàng)的算法鹃共,將 parse 的速度提升到極致鬼佣,超過所有 json 庫,包括曾經(jīng)號(hào)稱
最快的 JackJson霜浴。并且還超越了 google 的二進(jìn)制協(xié)議 protocol buf晶衷。
Fastjson 完
全支持 http://json.org 的標(biāo)準(zhǔn),
也是官方網(wǎng)站收錄的參考實(shí)現(xiàn)之一阴孟。支持各種
JDK 類型晌纫。包括基本類型、 JavaBean永丝、 Collection锹漱、 Map、
Enum慕嚷、泛型等哥牍。支持 JDK5毕泌、 JDK 6、 Android嗅辣、阿里云手機(jī)等環(huán)境撼泛。
1) 轉(zhuǎn)為 json 字符串

--
String jsonString = JSON.toJSONString(object);


2) 解析成對(duì)象


1). JavaBean : Person person = JSON.parseObject(jsonString, Person.class);
2). List : List listPerson =JSON.parseArray(jsonString, Person.class);
3). List:List listString = JSON.parseArray(jsonString, String.class);
4). List<Map> List<Map> listMap = JSON.parseObject(jsonString, **new
**TypeReference<List<Map>>(){});


package com.shsxt.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.shsxt.model.User;

public class FastJsonTest {

    /**
     * 將java對(duì)象轉(zhuǎn)換成json格式的字符串
     */
    @Test
    public void testJavaToJson() {
        
        // JavaBean對(duì)象
        User user = new User(1, "zhangsan", "123456", 18, "上海");
        String json1 = JSON.toJSONString(user);
        System.out.println(json1);
        
        
        // List集合
        List<String> list = new ArrayList<String>();
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");
        String json2 = JSON.toJSONString(list);
        System.out.println(json2);
        
        // JavaBean List
        List<User> userList = new ArrayList<>();
        User user2 = new User(2, "lisi", "123124", 19, "北京");
        User user3 = new User(3, "wangwu", "111111", 20, "杭州");
        userList.add(user);
        userList.add(user2);
        userList.add(user3);
        String json3 = JSON.toJSONString(userList);
        System.out.println(json3);
        
        
        // Map
        Map<String, Object> map = new HashMap<>();
        map.put("name","zhansgan");
        map.put("sex",true);
        map.put("user", user);
        map.put("userList", userList);
        String json4 = JSON.toJSONString(map);
        System.out.println(json4);
        
        
        Map<String, Object> map2 = new HashMap<>();
        map2.put("user1", user);
        map2.put("user2", user2);
        map2.put("user3", user3);
        String json5 = JSON.toJSONString(map2);
        System.out.println(json5);
        
        
        List<Map<String,String>> listMap = new ArrayList<>();
        Map<String, String> m1 = new HashMap<>();
        m1.put("user1", "aa");
        m1.put("user2", "bb");
        m1.put("user3", "cc");
        Map<String, String> m2 = new HashMap<>();
        m2.put("user4", "dd");
        m2.put("user5", "ee");
        m2.put("user6", "ff");
        listMap.add(m1);
        listMap.add(m2);
        String json6 = JSON.toJSONString(listMap);
        System.out.println(json6);
        
    }
    
    
    /**
     * 將json字符串轉(zhuǎn)換成java對(duì)象
     */
    @Test
    public void testJsonTtoJava() {
        // 轉(zhuǎn)JavaBean
        String json1 = "{\"userId\":1,\"userName\":\"zhangsan\",\"userPwd\":\"123456\",\"userAge\":18,\"address\":\"上海\"}";
        User user = JSON.parseObject(json1, User.class);
        System.out.println(user);
        
        // 轉(zhuǎn)List
        String json2 = "[\"zhangsan\",\"lisi\",\"wangwu\"]";
        List<String> list = JSON.parseArray(json2,String.class);
        System.out.println(list);
        
        String json3 = "[{\"userId\":1,\"userName\":\"zhangsan\",\"userPwd\":\"123456\",\"userAge\":18,\"address\":\"上海\"},{\"userId\":2,\"userName\":\"lisi\",\"userPwd\":\"123124\",\"userAge\":19,\"address\":\"北京\"},{\"userId\":3,\"userName\":\"wangwu\",\"userPwd\":\"111111\",\"userAge\":20,\"address\":\"杭州\"}]";
        List<User> userList = JSON.parseArray(json3,User.class);    
        System.out.println(userList);
        
        String json4 = "[{\"user1\":\"aa\",\"user2\":\"bb\",\"user3\":\"cc\"},{\"user4\":\"dd\",\"user5\":\"ee\",\"user6\":\"ff\"}]";
        List<Map<String,String>> listMap =  JSON.parseObject(json4, new TypeReference<List<Map<String,String>>>(){});
        System.out.println(listMap);
        
        
        
        
    }

}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市澡谭,隨后出現(xiàn)的幾起案子愿题,更是在濱河造成了極大的恐慌,老刑警劉巖译暂,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抠忘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡外永,警方通過查閱死者的電腦和手機(jī)崎脉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伯顶,“玉大人囚灼,你說我怎么就攤上這事〖礼茫” “怎么了灶体?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長掐暮。 經(jīng)常有香客問我蝎抽,道長,這世上最難降的妖魔是什么路克? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任樟结,我火速辦了婚禮,結(jié)果婚禮上精算,老公的妹妹穿的比我還像新娘瓢宦。我一直安慰自己,他們只是感情好灰羽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布驮履。 她就那樣靜靜地躺著,像睡著了一般廉嚼。 火紅的嫁衣襯著肌膚如雪玫镐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天怠噪,我揣著相機(jī)與錄音恐似,去河邊找鬼。 笑死舰绘,一個(gè)胖子當(dāng)著我的面吹牛蹂喻,可吹牛的內(nèi)容都是我干的葱椭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼口四,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼孵运!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蔓彩,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤治笨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后赤嚼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旷赖,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年更卒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了等孵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蹂空,死狀恐怖俯萌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情上枕,我是刑警寧澤咐熙,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站辨萍,受9級(jí)特大地震影響棋恼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锈玉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一爪飘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嘲玫,春花似錦悦施、人聲如沸并扇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽穷蛹。三九已至土陪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肴熏,已是汗流浹背鬼雀。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛙吏,地道東北人源哩。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓鞋吉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親励烦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谓着,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容