Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 

JSON

ABNFで RFC 8259 JSONとRFC 6901 JSON Pointer, RFC 6902 JSON Patch, RFC 7396 JSON Merge Patchを実装してみたもの

リリース?

1.0.1 GitHubで使えるパッケージ名になおした。

なにができる?

JSONのパース、オブジェクトマッピング、JSON Pointer, JSON Patch などがつかえるよ?

JavaのJSONPに準拠した実装もしてみたり。

実装はjsonとjson2 という名前で2つあるのでjson2の方をつかってください。このライブラリ内では内部型をjson2と呼びます。

storingifyはてきとーに実装しているのでまだ。

使用方法

SoftLibとSoftLibABNFとSoftLibJSONが必要です。

型情報

JavaとJSONの変換をするに当たって該当オブジェクトの中間型をとりあえず設けています。

pakage net.siisise.json2

  • JSON2
    • JSON2Value
      • JSON2NULL
      • JSON2Boolean
      • JSON2Number
      • JSON2String
      • JSON2Collcetion
        • JSON2Array
        • JSON2Object

JSONの配列はJavaの配列、Listと変換でき、JSONのObjectはJavaのObjectやMapと相互に変換できます。

JSON2Array は List として扱うことができ、JSONに変換可能なものを格納できます。

JSON2Object は Map<String,E> として扱うことができ、JSONに変換可能なものを格納できます。

は、Javaの型として扱いたい型を指定します。コンストラクタで型を指定することでJSONからの変換も適度に処理してくれます。

JSON Pointer, JSON PatchなどでArrayとObjectをまとめて扱うためにJSON2Collcetionを設けています。

Objectはfield(内部の変数)を変換します。beanなどにも対応は予定していたり。

ということで、ほとんど何も気にせずJavaとJSONの変換をこなしてくれます。

公開や更新したくない要素などセキュリティには注意してください。

例?

val はJSON2Value、obj は Javaの型として

JSONをparseしてJava Objcetに変換する

byte[] json; UTF-8限定 または String json;

JSON2Value val = JSON2.parse(json);
Objcet obj = val.map();

Java由来のものをJSONに変換する

JSON2Value val = JSON2.valueOf( Object object )
out.println(val); または val.toString();

json2から特定の型のJava classに変換する

ObjectX obj = val.typeMap(ObjcetX.class);
int i = val.typeMap(Integer.TYPE);

json2 から JavaのJSONPっぽいものに変換する

JsonValue jsonp = val.toJson();

JSON2Array, JSON2Object は stream も対応しているかもしれません。

これ以降はjson1系の説明なのでちょっと古い

JavaScript からの例 オブジェクトを文字列に変換する

JavaScript:JSON.stringify(obj)
Java;JSON.stringify(obj)
Java:JSONValue.valueOf(obj).toString();

文字列をオブジェクトに変換する

JavaScript:JSON.parse(src)
Java:JSON.parseToObj(src,class);
Java:JSON.parse(src)

おぶじぇくとまっぴんぐ各種

String to JSONValue to String

String str = "{ abc: def }";
JSONValue value = JSON8259Reg.parse(str);
String str = value.toString();

String str = "文字列";
JSONString value = JSONValue.valueOf(str);
Boolean, Number系も同じ。
str = value.value();

List list = new ArrayList();
(略)
JSONArray array = JSONValue.valueOf(list);
list = array.value();
list = array.map(List.class);

String[] stringArray = {略};
JSONArray array = JSONValue.valueOf(stringArray);
stringArray = array.map(はいれつのくらす);

int[] abc = {1,2,3};
JSONArray array = JSONValue.valueOf(abc);
abc = array.map(int[]のくらす);
abc = array.toArray(new int[0]); // も可 new

object は publicなデータを持つおぶじぇくと

class A {
 int[] b;
 String c;
 List d;
}

A object;
JSONObject obj = JSONValue.valueOf(object);
JSONArray numVal = (JSONArray)obj.get("b");
object = obj.map(A.class);

Map map = new HashMap();
JSONObject obj = JSONValue.valueOf(map);
map = obj.map(Map.class);

About

RFC 8259 JSON, RFC 6901 JSON Pointer, RFC 6902 JSON Patch

Topics

Resources

Languages