{"action":"created","comment":{"url":"https://api.github.com/repos/serde-rs/json/pulls/comments/173643026","pull_request_review_id":102870761,"id":173643026,"diff_hunk":"@@ -292,90 +391,381 @@ impl<'de> Deserialize<'de> for Number {\n             {\n                 Number::from_f64(value).ok_or_else(|| de::Error::custom(\"not a JSON number\"))\n             }\n+\n+            #[cfg(feature = \"arbitrary_precision\")]\n+            #[inline]\n+            fn visit_map<V>(self, mut visitor: V) -> Result<Number, V::Error>\n+            where\n+                V: de::MapAccess<'de>\n+            {\n+                let value = visitor.next_key::<NumberKey>()?;\n+                if value.is_none() {\n+                    return Err(de::Error::custom(\"number key was not found\"))\n+                }\n+                let v: NumberFromString = visitor.next_value()?;\n+                Ok(v.value)\n+            }\n         }\n \n         deserializer.deserialize_any(NumberVisitor)\n     }\n }\n \n+#[cfg(feature = \"arbitrary_precision\")]\n+struct NumberKey;\n+\n+#[cfg(feature = \"arbitrary_precision\")]\n+impl<'de> de::Deserialize<'de> for NumberKey {\n+    fn deserialize<D>(deserializer: D) -> Result<NumberKey, D::Error>\n+    where\n+        D: de::Deserializer<'de>\n+    {\n+        struct FieldVisitor;\n+\n+        impl<'de> de::Visitor<'de> for FieldVisitor {\n+            type Value = ();\n+\n+            fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n+                formatter.write_str(\"a valid number field\")\n+            }\n+\n+            fn visit_str<E>(self, s: &str) -> Result<(), E>\n+                where E: de::Error\n+            {\n+                if s == SERDE_STRUCT_FIELD_NAME {\n+                    Ok(())\n+                } else {\n+                    Err(de::Error::custom(\"expected field with custom name\"))\n+                }\n+            }\n+        }\n+\n+        deserializer.deserialize_identifier(FieldVisitor)?;\n+        Ok(NumberKey)\n+    }\n+}\n+\n+#[cfg(feature = \"arbitrary_precision\")]\n+pub struct NumberFromString {\n+    pub value: Number,\n+}\n+\n+#[cfg(feature = \"arbitrary_precision\")]\n+impl<'de> de::Deserialize<'de> for NumberFromString {\n+    fn deserialize<D>(deserializer: D) -> Result<NumberFromString, D::Error>\n+    where\n+        D: de::Deserializer<'de>\n+    {\n+        struct Visitor;\n+\n+        impl<'de> de::Visitor<'de> for Visitor {\n+            type Value = NumberFromString;\n+\n+            fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n+                formatter.write_str(\"string containing a number\")\n+            }\n+\n+            fn visit_string<E>(self, s: String) -> Result<NumberFromString, E>\n+            where E: de::Error,\n+            {\n+                Ok(NumberFromString { value: Number::from_string_unchecked(s) })\n+            }\n+        }\n+\n+        deserializer.deserialize_str(Visitor)\n+    }\n+}\n+\n+#[cfg(feature = \"arbitrary_precision\")]\n+fn invalid_number() -> Error {\n+    Error::syntax(ErrorCode::InvalidNumber, 0, 0)\n+}\n+\n+macro_rules! deserialize_number {\n+    ($deserialize:ident => $visit:ident) => {\n+        #[cfg(not(feature = \"arbitrary_precision\"))]\n+        fn $deserialize<V>(self, visitor: V) -> Result<V::Value, Error>\n+        where\n+            V: Visitor<'de>,\n+        {\n+            self.deserialize_any(visitor)\n+        }\n+\n+        #[cfg(feature = \"arbitrary_precision\")]\n+        fn $deserialize<V>(self, visitor: V) -> Result<V::Value, Error>\n+        where\n+            V: de::Visitor<'de>,\n+        {\n+            visitor.$visit(self.n.parse().map_err(|_| invalid_number())?)\n+        }\n+    }\n+}\n+\n impl<'de> Deserializer<'de> for Number {\n     type Error = Error;\n \n+    #[cfg(not(feature = \"arbitrary_precision\"))]\n     #[inline]\n     fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Error>\n     where\n         V: Visitor<'de>,\n     {\n         match self.n {\n-            N::PosInt(i) => visitor.visit_u64(i),\n+            N::PosInt(u) => visitor.visit_u64(u),\n             N::NegInt(i) => visitor.visit_i64(i),\n             N::Float(f) => visitor.visit_f64(f),\n         }\n     }\n \n+    #[cfg(feature = \"arbitrary_precision\")]\n+    #[inline]\n+    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Error>\n+        where V: Visitor<'de>\n+    {\n+        visitor.visit_map(NumberDeserializer {\n+            visited: false,\n+            number: self.n.into(),\n+        })\n+    }\n+\n+    deserialize_number!(deserialize_i8 => visit_i8);\n+    deserialize_number!(deserialize_i16 => visit_i16);\n+    deserialize_number!(deserialize_i32 => visit_i32);\n+    deserialize_number!(deserialize_i64 => visit_i64);\n+    deserialize_number!(deserialize_u8 => visit_u8);\n+    deserialize_number!(deserialize_u16 => visit_u16);\n+    deserialize_number!(deserialize_u32 => visit_u32);\n+    deserialize_number!(deserialize_u64 => visit_u64);\n+    deserialize_number!(deserialize_f32 => visit_f32);\n+    deserialize_number!(deserialize_f64 => visit_f64);\n+\n     forward_to_deserialize_any! {\n-        bool i8 i16 i32 i64 u8 u16 u32 u64 f32 f64 char str string bytes\n-        byte_buf option unit unit_struct newtype_struct seq tuple\n-        tuple_struct map struct enum identifier ignored_any\n+        bool char str string bytes byte_buf option unit unit_struct\n+        newtype_struct seq tuple tuple_struct map struct enum identifier\n+        ignored_any\n     }\n }\n \n-impl<'de, 'a> Deserializer<'de> for &'a Number {\n+impl<'de, 'a: 'de> Deserializer<'de> for &'a Number {\n     type Error = Error;\n \n+    #[cfg(not(feature = \"arbitrary_precision\"))]\n     #[inline]\n     fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Error>\n     where\n         V: Visitor<'de>,\n     {\n         match self.n {\n-            N::PosInt(i) => visitor.visit_u64(i),\n+            N::PosInt(u) => visitor.visit_u64(u),\n             N::NegInt(i) => visitor.visit_i64(i),\n             N::Float(f) => visitor.visit_f64(f),\n         }\n     }\n \n+    #[cfg(feature = \"arbitrary_precision\")]\n+    #[inline]\n+    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Error>\n+        where V: Visitor<'de>\n+    {\n+        visitor.visit_map(NumberDeserializer {\n+            visited: false,\n+            number: (&self.n as &str).into(),\n+        })\n+    }\n+\n+    deserialize_number!(deserialize_i8 => visit_i8);\n+    deserialize_number!(deserialize_i16 => visit_i16);\n+    deserialize_number!(deserialize_i32 => visit_i32);\n+    deserialize_number!(deserialize_i64 => visit_i64);\n+    deserialize_number!(deserialize_u8 => visit_u8);\n+    deserialize_number!(deserialize_u16 => visit_u16);\n+    deserialize_number!(deserialize_u32 => visit_u32);\n+    deserialize_number!(deserialize_u64 => visit_u64);\n+    deserialize_number!(deserialize_f32 => visit_f32);\n+    deserialize_number!(deserialize_f64 => visit_f64);\n+\n+    #[cfg(not(feature = \"arbitrary_precision\"))]\n+    fn deserialize_str<V>(self, visitor: V) -> Result<V::Value, Error>\n+    where\n+        V: de::Visitor<'de>,\n+    {\n+        self.deserialize_any(visitor)\n+    }\n+\n+    #[cfg(feature = \"arbitrary_precision\")]\n+    fn deserialize_str<V>(self, visitor: V) -> Result<V::Value, Error>\n+    where\n+        V: de::Visitor<'de>,\n+    {\n+        visitor.visit_str(&self.n)\n+    }\n+\n+    #[cfg(not(feature = \"arbitrary_precision\"))]\n+    fn deserialize_string<V>(self, visitor: V) -> Result<V::Value, Error>\n+    where\n+        V: de::Visitor<'de>,\n+    {\n+        self.deserialize_any(visitor)\n+    }\n+\n+    #[cfg(feature = \"arbitrary_precision\")]\n+    fn deserialize_string<V>(self, visitor: V) -> Result<V::Value, Error>\n+    where\n+        V: de::Visitor<'de>,\n+    {\n+        visitor.visit_str(&self.n)\n+    }\n+\n+    forward_to_deserialize_any! {\n+        bool char bytes byte_buf option unit unit_struct newtype_struct seq\n+        tuple tuple_struct map struct enum identifier ignored_any\n+    }\n+}\n+\n+#[cfg(feature = \"arbitrary_precision\")]\n+// Not public API. Should be pub(crate).\n+#[doc(hidden)]\n+pub struct NumberDeserializer<'a> {\n+    pub visited: bool,\n+    pub number: Cow<'a, str>,\n+}\n+\n+#[cfg(feature = \"arbitrary_precision\")]\n+impl<'de> MapAccess<'de> for NumberDeserializer<'de> {\n+    type Error = Error;\n+\n+    fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, Error>\n+    where\n+        K: de::DeserializeSeed<'de>,\n+    {\n+        if self.visited {\n+            return Ok(None)\n+        }\n+        self.visited = true;\n+        seed.deserialize(NumberFieldDeserializer).map(Some)\n+    }\n+\n+    fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, Error>\n+    where\n+        V: de::DeserializeSeed<'de>,\n+    {\n+        seed.deserialize(self.number.to_owned().into_deserializer())\n+    }\n+}\n+\n+#[cfg(feature = \"arbitrary_precision\")]\n+struct NumberFieldDeserializer;\n+\n+#[cfg(feature = \"arbitrary_precision\")]\n+impl<'de> Deserializer<'de> for NumberFieldDeserializer {\n+    type Error = Error;\n+\n+    fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Error>\n+    where\n+        V: de::Visitor<'de>,\n+    {\n+        visitor.visit_borrowed_str(SERDE_STRUCT_FIELD_NAME)\n+    }\n+\n     forward_to_deserialize_any! {\n-        bool i8 i16 i32 i64 u8 u16 u32 u64 f32 f64 char str string bytes\n-        byte_buf option unit unit_struct newtype_struct seq tuple\n-        tuple_struct map struct enum identifier ignored_any\n+        bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq\n+        bytes byte_buf map struct option unit newtype_struct\n+        ignored_any unit_struct tuple_struct tuple enum identifier\n     }\n }\n \n-macro_rules! from_signed {\n-    ($($signed_ty:ident)*) => {\n-        $(\n-            impl From<$signed_ty> for Number {\n-                #[inline]\n-                fn from(i: $signed_ty) -> Self {\n-                    if i < 0 {\n-                        Number { n: N::NegInt(i as i64) }\n-                    } else {\n-                        Number { n: N::PosInt(i as u64) }\n-                    }\n+impl FromPrimitive for Number {","path":"src/number.rs","position":540,"original_position":561,"commit_id":"c6306365b16dd199711b979a4523f1c6bac6ee79","original_commit_id":"9811b021704cfc8254b86336ae5601679a86c46d","user":{"login":"dtolnay","id":1940490,"avatar_url":"https://avatars2.githubusercontent.com/u/1940490?v=4","gravatar_id":"","url":"https://api.github.com/users/dtolnay","html_url":"https://github.com/dtolnay","followers_url":"https://api.github.com/users/dtolnay/followers","following_url":"https://api.github.com/users/dtolnay/following{/other_user}","gists_url":"https://api.github.com/users/dtolnay/gists{/gist_id}","starred_url":"https://api.github.com/users/dtolnay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dtolnay/subscriptions","organizations_url":"https://api.github.com/users/dtolnay/orgs","repos_url":"https://api.github.com/users/dtolnay/repos","events_url":"https://api.github.com/users/dtolnay/events{/privacy}","received_events_url":"https://api.github.com/users/dtolnay/received_events","type":"User","site_admin":false},"body":"This has not been addressed yet.","created_at":"2018-03-11T04:35:28Z","updated_at":"2018-03-11T04:35:28Z","html_url":"https://github.com/serde-rs/json/pull/416#discussion_r173643026","pull_request_url":"https://api.github.com/repos/serde-rs/json/pulls/416","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/serde-rs/json/pulls/comments/173643026"},"html":{"href":"https://github.com/serde-rs/json/pull/416#discussion_r173643026"},"pull_request":{"href":"https://api.github.com/repos/serde-rs/json/pulls/416"}},"in_reply_to_id":173525340},"pull_request":{"url":"https://api.github.com/repos/serde-rs/json/pulls/416","id":172418878,"html_url":"https://github.com/serde-rs/json/pull/416","diff_url":"https://github.com/serde-rs/json/pull/416.diff","patch_url":"https://github.com/serde-rs/json/pull/416.patch","issue_url":"https://api.github.com/repos/serde-rs/json/issues/416","number":416,"state":"open","locked":false,"title":"Arbitrary-precision numerics support","user":{"login":"alexreg","id":67036,"avatar_url":"https://avatars3.githubusercontent.com/u/67036?v=4","gravatar_id":"","url":"https://api.github.com/users/alexreg","html_url":"https://github.com/alexreg","followers_url":"https://api.github.com/users/alexreg/followers","following_url":"https://api.github.com/users/alexreg/following{/other_user}","gists_url":"https://api.github.com/users/alexreg/gists{/gist_id}","starred_url":"https://api.github.com/users/alexreg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexreg/subscriptions","organizations_url":"https://api.github.com/users/alexreg/orgs","repos_url":"https://api.github.com/users/alexreg/repos","events_url":"https://api.github.com/users/alexreg/events{/privacy}","received_events_url":"https://api.github.com/users/alexreg/received_events","type":"User","site_admin":false},"body":"Added support for arbitrary-precision numerics, in a similar way that the *toml* crate does for date-times (using an internal special struct).","created_at":"2018-03-02T04:16:11Z","updated_at":"2018-03-11T04:35:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"92cdd457f04d87ff1072a454fd2534afcf94328f","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/serde-rs/json/pulls/416/commits","review_comments_url":"https://api.github.com/repos/serde-rs/json/pulls/416/comments","review_comment_url":"https://api.github.com/repos/serde-rs/json/pulls/comments{/number}","comments_url":"https://api.github.com/repos/serde-rs/json/issues/416/comments","statuses_url":"https://api.github.com/repos/serde-rs/json/statuses/c6306365b16dd199711b979a4523f1c6bac6ee79","head":{"label":"alexreg:arbitrary-precision","ref":"arbitrary-precision","sha":"c6306365b16dd199711b979a4523f1c6bac6ee79","user":{"login":"alexreg","id":67036,"avatar_url":"https://avatars3.githubusercontent.com/u/67036?v=4","gravatar_id":"","url":"https://api.github.com/users/alexreg","html_url":"https://github.com/alexreg","followers_url":"https://api.github.com/users/alexreg/followers","following_url":"https://api.github.com/users/alexreg/following{/other_user}","gists_url":"https://api.github.com/users/alexreg/gists{/gist_id}","starred_url":"https://api.github.com/users/alexreg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexreg/subscriptions","organizations_url":"https://api.github.com/users/alexreg/orgs","repos_url":"https://api.github.com/users/alexreg/repos","events_url":"https://api.github.com/users/alexreg/events{/privacy}","received_events_url":"https://api.github.com/users/alexreg/received_events","type":"User","site_admin":false},"repo":{"id":101081070,"name":"serde-json","full_name":"alexreg/serde-json","owner":{"login":"alexreg","id":67036,"avatar_url":"https://avatars3.githubusercontent.com/u/67036?v=4","gravatar_id":"","url":"https://api.github.com/users/alexreg","html_url":"https://github.com/alexreg","followers_url":"https://api.github.com/users/alexreg/followers","following_url":"https://api.github.com/users/alexreg/following{/other_user}","gists_url":"https://api.github.com/users/alexreg/gists{/gist_id}","starred_url":"https://api.github.com/users/alexreg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexreg/subscriptions","organizations_url":"https://api.github.com/users/alexreg/orgs","repos_url":"https://api.github.com/users/alexreg/repos","events_url":"https://api.github.com/users/alexreg/events{/privacy}","received_events_url":"https://api.github.com/users/alexreg/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/alexreg/serde-json","description":"JSON Serialization for Rust","fork":true,"url":"https://api.github.com/repos/alexreg/serde-json","forks_url":"https://api.github.com/repos/alexreg/serde-json/forks","keys_url":"https://api.github.com/repos/alexreg/serde-json/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alexreg/serde-json/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alexreg/serde-json/teams","hooks_url":"https://api.github.com/repos/alexreg/serde-json/hooks","issue_events_url":"https://api.github.com/repos/alexreg/serde-json/issues/events{/number}","events_url":"https://api.github.com/repos/alexreg/serde-json/events","assignees_url":"https://api.github.com/repos/alexreg/serde-json/assignees{/user}","branches_url":"https://api.github.com/repos/alexreg/serde-json/branches{/branch}","tags_url":"https://api.github.com/repos/alexreg/serde-json/tags","blobs_url":"https://api.github.com/repos/alexreg/serde-json/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alexreg/serde-json/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alexreg/serde-json/git/refs{/sha}","trees_url":"https://api.github.com/repos/alexreg/serde-json/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alexreg/serde-json/statuses/{sha}","languages_url":"https://api.github.com/repos/alexreg/serde-json/languages","stargazers_url":"https://api.github.com/repos/alexreg/serde-json/stargazers","contributors_url":"https://api.github.com/repos/alexreg/serde-json/contributors","subscribers_url":"https://api.github.com/repos/alexreg/serde-json/subscribers","subscription_url":"https://api.github.com/repos/alexreg/serde-json/subscription","commits_url":"https://api.github.com/repos/alexreg/serde-json/commits{/sha}","git_commits_url":"https://api.github.com/repos/alexreg/serde-json/git/commits{/sha}","comments_url":"https://api.github.com/repos/alexreg/serde-json/comments{/number}","issue_comment_url":"https://api.github.com/repos/alexreg/serde-json/issues/comments{/number}","contents_url":"https://api.github.com/repos/alexreg/serde-json/contents/{+path}","compare_url":"https://api.github.com/repos/alexreg/serde-json/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alexreg/serde-json/merges","archive_url":"https://api.github.com/repos/alexreg/serde-json/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alexreg/serde-json/downloads","issues_url":"https://api.github.com/repos/alexreg/serde-json/issues{/number}","pulls_url":"https://api.github.com/repos/alexreg/serde-json/pulls{/number}","milestones_url":"https://api.github.com/repos/alexreg/serde-json/milestones{/number}","notifications_url":"https://api.github.com/repos/alexreg/serde-json/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alexreg/serde-json/labels{/name}","releases_url":"https://api.github.com/repos/alexreg/serde-json/releases{/id}","deployments_url":"https://api.github.com/repos/alexreg/serde-json/deployments","created_at":"2017-08-22T15:55:08Z","updated_at":"2017-08-22T15:56:09Z","pushed_at":"2018-03-10T23:45:18Z","git_url":"git://github.com/alexreg/serde-json.git","ssh_url":"git@github.com:alexreg/serde-json.git","clone_url":"https://github.com/alexreg/serde-json.git","svn_url":"https://github.com/alexreg/serde-json","homepage":"http://docs.serde.rs/serde_json/","size":1121,"stargazers_count":1,"watchers_count":1,"language":"Rust","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"serde-rs:master","ref":"master","sha":"aa63c9302da2127390663e2f781359adde76ef7a","user":{"login":"serde-rs","id":11965399,"avatar_url":"https://avatars3.githubusercontent.com/u/11965399?v=4","gravatar_id":"","url":"https://api.github.com/users/serde-rs","html_url":"https://github.com/serde-rs","followers_url":"https://api.github.com/users/serde-rs/followers","following_url":"https://api.github.com/users/serde-rs/following{/other_user}","gists_url":"https://api.github.com/users/serde-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/serde-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/serde-rs/subscriptions","organizations_url":"https://api.github.com/users/serde-rs/orgs","repos_url":"https://api.github.com/users/serde-rs/repos","events_url":"https://api.github.com/users/serde-rs/events{/privacy}","received_events_url":"https://api.github.com/users/serde-rs/received_events","type":"Organization","site_admin":false},"repo":{"id":35894511,"name":"json","full_name":"serde-rs/json","owner":{"login":"serde-rs","id":11965399,"avatar_url":"https://avatars3.githubusercontent.com/u/11965399?v=4","gravatar_id":"","url":"https://api.github.com/users/serde-rs","html_url":"https://github.com/serde-rs","followers_url":"https://api.github.com/users/serde-rs/followers","following_url":"https://api.github.com/users/serde-rs/following{/other_user}","gists_url":"https://api.github.com/users/serde-rs/gists{/gist_id}","starred_url":"https://api.github.com/users/serde-rs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/serde-rs/subscriptions","organizations_url":"https://api.github.com/users/serde-rs/orgs","repos_url":"https://api.github.com/users/serde-rs/repos","events_url":"https://api.github.com/users/serde-rs/events{/privacy}","received_events_url":"https://api.github.com/users/serde-rs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/serde-rs/json","description":"Strongly typed JSON library for Rust","fork":false,"url":"https://api.github.com/repos/serde-rs/json","forks_url":"https://api.github.com/repos/serde-rs/json/forks","keys_url":"https://api.github.com/repos/serde-rs/json/keys{/key_id}","collaborators_url":"https://api.github.com/repos/serde-rs/json/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/serde-rs/json/teams","hooks_url":"https://api.github.com/repos/serde-rs/json/hooks","issue_events_url":"https://api.github.com/repos/serde-rs/json/issues/events{/number}","events_url":"https://api.github.com/repos/serde-rs/json/events","assignees_url":"https://api.github.com/repos/serde-rs/json/assignees{/user}","branches_url":"https://api.github.com/repos/serde-rs/json/branches{/branch}","tags_url":"https://api.github.com/repos/serde-rs/json/tags","blobs_url":"https://api.github.com/repos/serde-rs/json/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/serde-rs/json/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/serde-rs/json/git/refs{/sha}","trees_url":"https://api.github.com/repos/serde-rs/json/git/trees{/sha}","statuses_url":"https://api.github.com/repos/serde-rs/json/statuses/{sha}","languages_url":"https://api.github.com/repos/serde-rs/json/languages","stargazers_url":"https://api.github.com/repos/serde-rs/json/stargazers","contributors_url":"https://api.github.com/repos/serde-rs/json/contributors","subscribers_url":"https://api.github.com/repos/serde-rs/json/subscribers","subscription_url":"https://api.github.com/repos/serde-rs/json/subscription","commits_url":"https://api.github.com/repos/serde-rs/json/commits{/sha}","git_commits_url":"https://api.github.com/repos/serde-rs/json/git/commits{/sha}","comments_url":"https://api.github.com/repos/serde-rs/json/comments{/number}","issue_comment_url":"https://api.github.com/repos/serde-rs/json/issues/comments{/number}","contents_url":"https://api.github.com/repos/serde-rs/json/contents/{+path}","compare_url":"https://api.github.com/repos/serde-rs/json/compare/{base}...{head}","merges_url":"https://api.github.com/repos/serde-rs/json/merges","archive_url":"https://api.github.com/repos/serde-rs/json/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/serde-rs/json/downloads","issues_url":"https://api.github.com/repos/serde-rs/json/issues{/number}","pulls_url":"https://api.github.com/repos/serde-rs/json/pulls{/number}","milestones_url":"https://api.github.com/repos/serde-rs/json/milestones{/number}","notifications_url":"https://api.github.com/repos/serde-rs/json/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/serde-rs/json/labels{/name}","releases_url":"https://api.github.com/repos/serde-rs/json/releases{/id}","deployments_url":"https://api.github.com/repos/serde-rs/json/deployments","created_at":"2015-05-19T16:30:20Z","updated_at":"2018-03-09T17:54:22Z","pushed_at":"2018-03-11T04:15:43Z","git_url":"git://github.com/serde-rs/json.git","ssh_url":"git@github.com:serde-rs/json.git","clone_url":"https://github.com/serde-rs/json.git","svn_url":"https://github.com/serde-rs/json","homepage":"http://docs.serde.rs/serde_json/","size":1093,"stargazers_count":428,"watchers_count":428,"language":"Rust","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":111,"mirror_url":null,"archived":false,"open_issues_count":49,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":111,"open_issues":49,"watchers":428,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/serde-rs/json/pulls/416"},"html":{"href":"https://github.com/serde-rs/json/pull/416"},"issue":{"href":"https://api.github.com/repos/serde-rs/json/issues/416"},"comments":{"href":"https://api.github.com/repos/serde-rs/json/issues/416/comments"},"review_comments":{"href":"https://api.github.com/repos/serde-rs/json/pulls/416/comments"},"review_comment":{"href":"https://api.github.com/repos/serde-rs/json/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/serde-rs/json/pulls/416/commits"},"statuses":{"href":"https://api.github.com/repos/serde-rs/json/statuses/c6306365b16dd199711b979a4523f1c6bac6ee79"}},"author_association":"NONE"}}
{"actor":{"display_login":"dtolnay"}}