Comments (9)
Can not reproduce this on my end. Using the latest version of serde
and serde_json
and this simple test code:
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct Test {
sds: String
}
fn main() {
let test = Test { sds: "sds".to_string() };
let res = serde_json::to_string(&test).unwrap();
println!("{}", res);
}
yields:
{"sds":"sds"}
as expected, please provide more information and perhaps an simple example illustrating your issue.
from json.
like
let str = "sds";
let str_json = serde_json::to_string(str).unwrap();
println!("{:?}", str_json); // "\"sds\""
let res: Result<String, serde_json::Error> = serde_json::from_str(str);
println!("{:?}", res); // Err(Error("expected value", line: 1, column: 1))
from json.
serde_json::from_str()
deserialize a structure from a json string. I don't think
sds
is a valid json string.
from json.
Oh, I guess you have confused "the string type in json" (i.e. the "value"
in {"field": "value"}
) with "a string that is in the json format" (i.e. {"field": "value"}
as a whole), am I right?
It's indeed better for serde_json::{to_string, from_str}
to be renamed to serde_json::{to_json, from_json}
IMO, but that would be a breaking change and the documentation clarifies things most of the time anyway.
from json.
I have a project that communicates with Java projects, and in some Java json parsing libraries, the String type is treated directly as
sds
Instead of
\"sds\"
so
let res: Result<String, serde_json::Error> = serde_json::from_str("sds");
println!("{:?}", res); // Err(Error("expected value", line: 1, column: 1))
let res: Result<String, serde_json::Error> = serde_json::from_str("\"sds\"");
println!("{:?}", res); // Ok("sds")
Now I receive a Java response that I must process before I can use serde_json
like
pub fn json_field_compatible(ty: &str, mut field: String) -> String {
if ty == "String" && !field.starts_with("\"") {
field.insert(0, '\"');
field.insert(field.len(), '\"');
}
field
}
from json.
... the String type treated directly as
sds
instead of"sds"
Such implementation would be incompatible with the JSON format specification, as both RFC 8259 and ECMA-404 define string
as:
'"' characters '"'
Here is a simple JSON format verifier if you don't want to look into the specs (remember to uncheck the Fix JSON
option as this will enable auto-correction).
from json.
i know , so i hope have like a "Fix JSON" Feature,
from json.
In that case, you probably should change your title to "Feature request: apply simple auto-corrections when deserialize", though I don't think that would be accepted.
from json.
Deserializing things other than JSON is out of scope for this library.
from json.
Related Issues (20)
- In Rust 1.78+, too many errors get printed when building with neither "std" nor "alloc" HOT 2
- Adding languages to the serde-rs organization HOT 1
- Enum deserialization not working HOT 1
- Am I passing metadata through DeserializeSeed to facilitate deserialization of algebraic datatypes as intended HOT 2
- Serialize enum - only tag
- Implement `Deserializer` for `Map<String, Value>` and `&Map<String, Value>`
- Writing to fmt::Formatter
- Example on "Creating JSON by serializing data structures" doesn't work.
- [Bug] Fails to parse root string array HOT 3
- Discrepancy between serde_json::from_{reader,str}
- Unrecoverable JSON Deserialization Error on Unexpected Enum Variant: "trailing characters" HOT 1
- Unable to differentiate `None` and `Some(Value::Null)`
- Non-obvious error message when unable to borrow string and there aren't obvious escape sequences HOT 1
- not ignoring unknow field by default and how do i make this work? HOT 1
- Internally tagged enums duplicate tag when struct also has it assigned
- Weird behaviour when deserializing a `RawValue` through a `Visitor`. HOT 1
- No method named `shift_insert` found for struct `IndexMap` in the current scope HOT 1
- How to Add Resiliency to Errors in a `no_std` and `no_alloc` Context ? HOT 2
- Untagged Enum Bug (?) HOT 1
- Support in-place deserialization in StreamDeserializer
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from json.