sonic-cpp icon indicating copy to clipboard operation
sonic-cpp copied to clipboard

support jsonpointer format as rfc6901

Open gcp85163 opened this issue 2 years ago • 3 comments

Hi, Does sonic-cpp support merge-patch easily? For example : { op: replace, patch : "Object/0/New_object", value : "123" }

If use json_pointer: sonic_json::Node* node2 = doc.AtPointer(PointerType({"Object", 0, "New_object"})); This doesn't format well. transfer patch : "Object/0/New_object" to {"Object", 0, "New_object"}

gcp85163 avatar May 24 '23 03:05 gcp85163

Are you discuss about jsonpointer rfc, for example, "/Object/0/New_object" follows jsonpointer rfc.

We will support the RFC in the future.

However, parsing “Object/0/New_object” hurts performance, and it can be easily rewritten as {"Object", 0, "New_object"}, so, we suggest using the existing format like {"Object", 0, "New_object"}.

liuq19 avatar May 24 '23 05:05 liuq19

Are you discuss about jsonpointer rfc, for example, "/Object/0/New_object" follows jsonpointer rfc.

We will support the RFC in the future.

However, parsing “Object/0/New_object” hurts performance, and it can be easily rewritten as {"Object", 0, "New_object"}, so, we suggest using the existing format like {"Object", 0, "New_object"}.

Yes, I am talking about jsonpointer rfc.

For current code, How to rewritten as {"Object", 0, "New_object"}? just split string by '/' ? But how to handle string to int automatic? Can you give me some example?

gcp85163 avatar May 24 '23 06:05 gcp85163

This is not just a matter of splitting strings by '/', you need to refer to the RFC to distinguish the escape characters. and you can refer to the rapidjson.

liuq19 avatar May 25 '23 09:05 liuq19