Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
39e4c4d8
Kaydet (Commit)
39e4c4d8
authored
Kas 10, 2014
tarafından
Berker Peksag
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Issue #21650: Add an `--sort-keys` option to json.tool CLI.
üst
ffd842e1
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
63 additions
and
3 deletions
+63
-3
json.rst
Doc/library/json.rst
+11
-0
3.5.rst
Doc/whatsnew/3.5.rst
+8
-0
tool.py
Lib/json/tool.py
+10
-2
test_tool.py
Lib/test/test_json/test_tool.py
+32
-1
NEWS
Misc/NEWS
+2
-0
No files found.
Doc/library/json.rst
Dosyayı görüntüle @
39e4c4d8
...
@@ -567,6 +567,7 @@ the last name-value pair for a given name::
...
@@ -567,6 +567,7 @@ the last name-value pair for a given name::
The *object_pairs_hook* parameter can be used to alter this behavior.
The *object_pairs_hook* parameter can be used to alter this behavior.
.. highlight:: bash
.. highlight:: bash
.. module:: json.tool
.. _json-commandline:
.. _json-commandline:
...
@@ -586,6 +587,10 @@ specified, :attr:`sys.stdin` and :attr:`sys.stdout` will be used respectively::
...
@@ -586,6 +587,10 @@ specified, :attr:`sys.stdin` and :attr:`sys.stdout` will be used respectively::
$ echo '{1.2:3.4}' | python -m json.tool
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
.. versionchanged:: 3.5
The output is now in the same order as the input. Use the
:option:`--sort-keys` option to sort the output of dictionaries
alphabetically by key.
Command line options
Command line options
^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^
...
@@ -613,6 +618,12 @@ Command line options
...
@@ -613,6 +618,12 @@ Command line options
Write the output of the *infile* to the given *outfile*. Otherwise, write it
Write the output of the *infile* to the given *outfile*. Otherwise, write it
to :attr:`sys.stdout`.
to :attr:`sys.stdout`.
.. cmdoption:: --sort-keys
Sort the output of dictionaries alphabetically by key.
.. versionadded:: 3.5
.. cmdoption:: -h, --help
.. cmdoption:: -h, --help
Show the help message.
Show the help message.
Doc/whatsnew/3.5.rst
Dosyayı görüntüle @
39e4c4d8
...
@@ -211,6 +211,14 @@ ipaddress
...
@@ -211,6 +211,14 @@ ipaddress
network objects from existing addresses. (Contributed by Peter Moody
network objects from existing addresses. (Contributed by Peter Moody
and Antoine Pitrou in :issue:`16531`.)
and Antoine Pitrou in :issue:`16531`.)
json
----
* The output of :mod:`json.tool` command line interface is now in the same
order as the input. Use the :option:`--sort-keys` option to sort the output
of dictionaries alphabetically by key. (Contributed by Berker Peksag in
:issue:`21650`.)
os
os
--
--
...
...
Lib/json/tool.py
Dosyayı görüntüle @
39e4c4d8
...
@@ -11,6 +11,7 @@ Usage::
...
@@ -11,6 +11,7 @@ Usage::
"""
"""
import
argparse
import
argparse
import
collections
import
json
import
json
import
sys
import
sys
...
@@ -24,17 +25,24 @@ def main():
...
@@ -24,17 +25,24 @@ def main():
help
=
'a JSON file to be validated or pretty-printed'
)
help
=
'a JSON file to be validated or pretty-printed'
)
parser
.
add_argument
(
'outfile'
,
nargs
=
'?'
,
type
=
argparse
.
FileType
(
'w'
),
parser
.
add_argument
(
'outfile'
,
nargs
=
'?'
,
type
=
argparse
.
FileType
(
'w'
),
help
=
'write the output of infile to outfile'
)
help
=
'write the output of infile to outfile'
)
parser
.
add_argument
(
'--sort-keys'
,
action
=
'store_true'
,
default
=
False
,
help
=
'sort the output of dictionaries alphabetically by key'
)
options
=
parser
.
parse_args
()
options
=
parser
.
parse_args
()
infile
=
options
.
infile
or
sys
.
stdin
infile
=
options
.
infile
or
sys
.
stdin
outfile
=
options
.
outfile
or
sys
.
stdout
outfile
=
options
.
outfile
or
sys
.
stdout
sort_keys
=
options
.
sort_keys
with
infile
:
with
infile
:
try
:
try
:
obj
=
json
.
load
(
infile
)
if
sort_keys
:
obj
=
json
.
load
(
infile
)
else
:
obj
=
json
.
load
(
infile
,
object_pairs_hook
=
collections
.
OrderedDict
)
except
ValueError
as
e
:
except
ValueError
as
e
:
raise
SystemExit
(
e
)
raise
SystemExit
(
e
)
with
outfile
:
with
outfile
:
json
.
dump
(
obj
,
outfile
,
sort_keys
=
True
,
indent
=
4
)
json
.
dump
(
obj
,
outfile
,
sort_keys
=
sort_keys
,
indent
=
4
)
outfile
.
write
(
'
\n
'
)
outfile
.
write
(
'
\n
'
)
...
...
Lib/test/test_json/test_tool.py
Dosyayı görüntüle @
39e4c4d8
...
@@ -6,6 +6,7 @@ import subprocess
...
@@ -6,6 +6,7 @@ import subprocess
from
test
import
support
from
test
import
support
from
test.script_helper
import
assert_python_ok
from
test.script_helper
import
assert_python_ok
class
TestTool
(
unittest
.
TestCase
):
class
TestTool
(
unittest
.
TestCase
):
data
=
"""
data
=
"""
...
@@ -15,7 +16,7 @@ class TestTool(unittest.TestCase):
...
@@ -15,7 +16,7 @@ class TestTool(unittest.TestCase):
:"yes"} ]
:"yes"} ]
"""
"""
expect
=
textwrap
.
dedent
(
"""
\
expect
_without_sort_keys
=
textwrap
.
dedent
(
"""
\
[
[
[
[
"blorpie"
"blorpie"
...
@@ -37,6 +38,28 @@ class TestTool(unittest.TestCase):
...
@@ -37,6 +38,28 @@ class TestTool(unittest.TestCase):
]
]
"""
)
"""
)
expect
=
textwrap
.
dedent
(
"""
\
[
[
"blorpie"
],
[
"whoops"
],
[],
"d-shtaeou",
"d-nthiouh",
"i-vhbjkhnth",
{
"nifty": 87
},
{
"morefield": false,
"field": "yes"
}
]
"""
)
def
test_stdin_stdout
(
self
):
def
test_stdin_stdout
(
self
):
with
subprocess
.
Popen
(
with
subprocess
.
Popen
(
(
sys
.
executable
,
'-m'
,
'json.tool'
),
(
sys
.
executable
,
'-m'
,
'json.tool'
),
...
@@ -75,3 +98,11 @@ class TestTool(unittest.TestCase):
...
@@ -75,3 +98,11 @@ class TestTool(unittest.TestCase):
self
.
assertEqual
(
rc
,
0
)
self
.
assertEqual
(
rc
,
0
)
self
.
assertTrue
(
out
.
startswith
(
b
'usage: '
))
self
.
assertTrue
(
out
.
startswith
(
b
'usage: '
))
self
.
assertEqual
(
err
,
b
''
)
self
.
assertEqual
(
err
,
b
''
)
def
test_sort_keys_flag
(
self
):
infile
=
self
.
_create_infile
()
rc
,
out
,
err
=
assert_python_ok
(
'-m'
,
'json.tool'
,
'--sort-keys'
,
infile
)
self
.
assertEqual
(
rc
,
0
)
self
.
assertEqual
(
out
.
splitlines
(),
self
.
expect_without_sort_keys
.
encode
()
.
splitlines
())
self
.
assertEqual
(
err
,
b
''
)
Misc/NEWS
Dosyayı görüntüle @
39e4c4d8
...
@@ -183,6 +183,8 @@ Core and Builtins
...
@@ -183,6 +183,8 @@ Core and Builtins
Library
Library
-------
-------
-
Issue
#
21650
:
Add
an
`--
sort
-
keys
`
option
to
json
.
tool
CLI
.
-
Issues
#
814253
,
#
9179
:
Group
references
and
conditional
group
references
now
-
Issues
#
814253
,
#
9179
:
Group
references
and
conditional
group
references
now
work
in
lookbehind
assertions
in
regular
expressions
.
work
in
lookbehind
assertions
in
regular
expressions
.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment